[c#] Timer
хз. Вообще говоря CheckStatus у тебя каждый раз вызывается в новом треде (насколько я понимаю при этом если вдруг так получится, что она не успеет завершиться за эти самые шесть секунд (до следующего вызова таймера то может произойти что угодно.
Нить как то закрывать?
ThreadPool.QueueUserWorkItem(new WaitCallback(EstablishSocket;
Честно говоря, вэтих твоих примерах очень много использользований нитей. Например, в конкретном коде каждый тик таймера - новая нить, как сказано было выше. Есть маза как можно реже создавать нити, только по необходимости, ибо каждая нить - это не только мегабайт в стеке, но и неебовые проблемы с синхронизацией.
Варианты деланья что-либо по таймеру:
1. Сделать отдельный тред, причем не из тредпула, а руками -
Thread timerThread = new Thread(new ThreadStart(timerMethod;
void timerMethod
{
while(true)
{
Thread.Sleep(timerInterval);
DoSomeWork;
}
}
В этом случае все вызовы DoSomeWork упорядоченны в времени, да и тред твой и управляется относительно легко...
2. Заботать класс System.Timers.Timer, в мсдне сказано, что это типо серверный таймер....
Больше ничего не знаю, ибо не юзал.
Спасибо сейчас буду пробывать.
Оставить комментарий
markmsk
Сделал такой таймерВопрос такой как-то странно себя ведёт этот таймер. Через некоторое время начинает без задержки вызывать функцию.
Функция которая вызывается вызывает соединение с сервером через сокет.