2016-06-10 4 views
1

В настоящее время я создаю службу Windows, которая использует интервал таймера. Этот таймер повторяет каждый второй, но это может занять больше времени, чем на одну секунду, чтобы закончить Elapsed событие таймера, который создается следующим образом:Выполнять таймеры, если функция не завершена

Timer timer = new Timer(); 
timer.Enabled = true; 
timer.Interval = 1000; // 1 second 
timer.Elapsed += myFunction; 

Теперь простой вопрос: продолжать ли этот таймер, даже если он не сделал Закончить мероприятие Elapsed, или таймер ждет и продолжает работу после завершения события Elapsed?

ответ

3

System.Timers.Timer класс имеет AutoReset свойство.

Если установлено значение false, таймер запускается только один раз, что позволяет начать его снова, когда вы закончите работу.

Если вы установили его на true, таймер не останавливается и не запускает вашу функцию каждую секунду, пока не появится всплывающее окно.

По-умолчанию, это свойство is set to true

3

Да, это делает

Если свойство SynchronizingObject равно нулю, то Прошедшее событие поднимается на ThreadPool нити. Если обработка события Elapsed длится дольше Interval, событие может быть снова поднято в другом потоке ThreadPool. В этой ситуации обработчик события должен быть реентерабельным.

Source