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

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

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

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

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

textual
Листинг программы
private void timer1_Tick(object sender, EventArgs e)
        {
            Thread t = new Thread(IsServerConnectionActive);
            t.Start();
            if (ok == true)
            {
                label3.ForeColor = Color.Green;
                label3.Text = "Сервер: доступен";
            }
            else 
            {
                label3.Text = "Сервер: не доступен";
                label3.ForeColor = Color.Red;
            }
        }bool ok = false;
        //этот метод будет запущен в новом потоке
        private void IsServerConnectionActive()
        {
            
            try
            {
                Server_kanal.Server_kanal ser2 = (Server_kanal.Server_kanal)Activator.GetObject(typeof(Server_kanal.Server_kanal), "tcp://localhost:10000/met2");
                chan.StopListening(ser2);
                s = ser2.Server_k(s);
                ok = true;
            }
            catch
            {
                ok = false;
            }
        }

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


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

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

10   голосов , оценка 3.8 из 5
Похожие ответы