Продолжаются ли таймеры, если функция не завершилась

В настоящее время я создаю службу 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. В этой ситуации обработчик события должен быть повторно входящим.

Источник

Другие вопросы по тегам