Как действие 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;
}
}