Как действие timer1_Tick обрабатывать в новом потоке - C#

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

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

у меня есть timer1_Tick в котором я проверяю подключение к серверу но если я просто его запускаю то начинает программа тормозить как timer1_Tick обрабатывать в новом помоке чтоб не тормозило я пытался поставить в поток но мне выдавало ошибку Недопустимая операция в нескольких потоках: ... пытался разными способами исправить и подключал делегат ничего не получилось можете помоч?
Листинг программы
  1. private void timer1_Tick(object sender, EventArgs e)
  2. {
  3. try
  4. {
  5. Server_kanal.Server_kanal ser2 = (Server_kanal.Server_kanal)Activator.GetObject(typeof(Server_kanal.Server_kanal), "tcp://localhost:11000/met2");
  6. chan.StopListening(ser2);
  7. s = ser2.Server_k(s);
  8. label3.ForeColor = Color.Green;
  9. label3.Text = "Сервер: доступен";
  10. }
  11. catch
  12. {
  13. label3.Text = "Сервер: не доступен";
  14. label3.ForeColor = Color.Red;
  15. }
  16. }

Решение задачи: «Как действие timer1_Tick обрабатывать в новом потоке»

textual
Листинг программы
  1. private void timer1_Tick(object sender, EventArgs e)
  2.         {
  3.             Thread t = new Thread(IsServerConnectionActive);
  4.             t.Start();
  5.             if (ok == true)
  6.             {
  7.                 label3.ForeColor = Color.Green;
  8.                 label3.Text = "Сервер: доступен";
  9.             }
  10.             else
  11.             {
  12.                 label3.Text = "Сервер: не доступен";
  13.                 label3.ForeColor = Color.Red;
  14.             }
  15.         }bool ok = false;
  16.         //этот метод будет запущен в новом потоке
  17.         private void IsServerConnectionActive()
  18.         {
  19.            
  20.             try
  21.             {
  22.                 Server_kanal.Server_kanal ser2 = (Server_kanal.Server_kanal)Activator.GetObject(typeof(Server_kanal.Server_kanal), "tcp://localhost:10000/met2");
  23.                 chan.StopListening(ser2);
  24.                 s = ser2.Server_k(s);
  25.                 ok = true;
  26.             }
  27.             catch
  28.             {
  29.                 ok = false;
  30.             }
  31.         }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы