public static void TimerCallbackSample() { TimerExampleState s = new TimerExampleState(); // Делегат - представляет метод, обрабатывающий вызовы от события Timer. TimerCallback timerDelegate = new TimerCallback(CheckStatus); // dueTime - количество времени до начала использования параметра // callback, в миллисекундах. Следует задать поле // Timeout.Infinite для того, чтобы не допустить запуск // таймера. Задайте значение ноль (0) для немедленного // запуска таймера. // period - временной интервал между вызовами параметра callback, // в миллисекундах. Следует задать поле Timeout.Infinite // для отключения периодического сигнализирования. // - начинаем работать ч\з секунду с интервалом в секунду Timer timer = new Timer(timerDelegate, s, 1000, 1000); s.tmr = timer; while (s.tmr != null) { Thread.Sleep(0); } Console.WriteLine("Пример с таймером завершен."); }
static void CheckStatus(Object state) { TimerExampleState s = (TimerExampleState)state; s.counter++; Console.WriteLine("{0} Checking Status {1}.", DateTime.Now.TimeOfDay, s.counter); if (s.counter == 5) { // Меняет время запуска и интервал межу вызовами метода таймера. // - начинаем работать ч\з 5 секунд с интервалом в 0.1 секунду (s.tmr).Change(5000, 100); Console.WriteLine("подождите (5 сек)..."); } if (s.counter == 10) { Console.WriteLine("Удаляем таймер..."); s.tmr.Dispose(); s.tmr = null; } }