Продолжаются ли таймеры, если функция не завершилась
В настоящее время я создаю службу Windows, которая использует интервал таймера. Этот таймер повторяется каждую секунду, но его завершение может занять больше одной секунды Elapsed
Событие таймера, которое создается следующим образом:
Timer timer = new Timer();
timer.Enabled = true;
timer.Interval = 1000; // 1 second
timer.Elapsed += myFunction;
Теперь простой вопрос: продолжает ли этот таймер, хотя он не закончил Elapsed
событие, или таймер ждет и продолжает, когда Elapsed
событие закончено?
2 ответа
System.Timers.Timer
класс имеет AutoReset
Имущество.
Если установлено false
, таймер будет работать только один раз, что позволит вам запустить его снова после завершения работы.
Если вы установите его true
таймер не остановится и не запустит вашу функцию каждую секунду, если не появится исключение.
По умолчанию это свойство установлено в true
Да, это так
Если свойство SynchronizingObject имеет значение null, событие Elapsed вызывается в потоке ThreadPool. Если обработка события Elapsed длится дольше, чем Interval, событие может возникнуть снова в другом потоке ThreadPool. В этой ситуации обработчик события должен быть повторно входящим.