1

У меня есть форма, на неё несколько lables они служат для индикации, когда программа работает, она считывает данные из базы данных, которые в свою очередь обновляются, и мне нужно чтобы эти lables тоже обновлялись, я хотел запустить Thread thread = new Thread(UpdateMeth); Но эта конструкция выдаёт ошибку "A field initializer cannot reference the non-static field, method, or property" Подскажите как сделать так чтобы метод UpdateMeth() выполнялся постоянно?

Thread thread = new Thread(UpdateMeth);
thread.Start();
List<int> goldC { get; set; }
private void btnUpdate_Click(object sender, RoutedEventArgs e)
{
    UpdateMeth();
}
private void UpdateMeth()
{
    goldC = baseTimerLogic.Check(userController.CurrentUser);
    lblPopulationCount.Content = goldC[0].ToString();
    lblFood.Content = goldC[1].ToString();
    lblRock.Content = goldC[2].ToString();
    lblWood.Content = goldC[3].ToString();
    lblIron.Content = goldC[4].ToString();
    lblCoal.Content = goldC[5].ToString();
    lblGold.Content = goldC[6].ToString();

}

  • 2
    Чтобы что-то обновлялось, нужен где-то цикл или таймер или что-то еще? При чем тут Thread? И код нужно писать в методах, а не в классе. – aepot Mar 31 '21 at 20:48
  • ну я думал, что thread можно запустить и он будет выполняться постоянно то есть выполнять UpdateMeth, который будет обновлять мой лейблы, а если сделать цикл бесконечный, то он просто зависнет навсегда) – Алексей Мелентьев Mar 31 '21 at 20:54
  • 1
    Поток выполняет код, который вы ему дали. Он больше ничего не умеет делать. Вот готовый пример. Копируете код в место где // ... что-то сделать, и делаете 2 кнопки "Старт" и "Стоп", из обработчика одной вызываете StartLoop, из другой StopLoop. – aepot Mar 31 '21 at 20:59
  • 1
    ... там где // ... ex.Message пишете MessageBox.Show(ex.Message), чтобы в случае чего увидеть ошибку, если возникнет. – aepot Mar 31 '21 at 21:09
  • 1
    List<int> goldC у вас объявлен как свойство, для чего? Уберите свойство и объявите список прямо там, где у вас код, в методе List<int> goldC = .... В многопоточном и асинхронном программировании надо избегать использования глобальных переменных (полей и свойств) там, где возможно. – aepot Mar 31 '21 at 21:12
  • хорошо, спасибо – Алексей Мелентьев Mar 31 '21 at 21:23
  • 1
    РАБОТАЕЕЕЕТ..)) спасибо – Алексей Мелентьев Mar 31 '21 at 21:29

0 Answers0