Вызов функции по завершению таймера - C#

Узнай цену своей работы

Формулировка задачи:

Помогите написать код, что бы вызвалась функция в момент, когда таймер достигнет заданного значения. При этом пользователь не должен ждать завершения этого процесса, он может пользоваться другими встроенными функция программы параллельно. не могу разобраться как это можно реализовать, помогите пожалуйста!
Написал следующее: (status - это label на форме).
private System.Timers.Timer timer;
            public void start()
            {
                status.Text = "Занят";
                timer = new System.Timers.Timer(10000);
                timer.Interval = 1000;// 1сек
                timer.Enabled = true;
                timer.Elapsed += new ElapsedEventHandler(time_print);
            }
            
            private void time_print(object source, ElapsedEventArgs e)
            {
                status.Text = "Свободен";
            }
Теперь возникла проблема: ругается на status.Text = "Свободен"; Содержание ошибки: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label_status' не из того потока, в котором он был создан."

Решение задачи: «Вызов функции по завершению таймера»

textual
Листинг программы
status.Invoke(new Action(() => status.Text = "Свободен"));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5