Таймеры в службе Windows - PullRequest
       7

Таймеры в службе Windows

1 голос
/ 21 сентября 2011

Я хочу использовать таймеры в своем сервисе.Но я слышал, что таймеры вызывают проблемы тупика.Предположим, я установил таймер на запуск каждые 10 минут.Мой сервис занимает 5 минут, чтобы закончить свое текущее исполнение.Но в некоторых случаях это займет больше времени. (Это непредсказуемо).Так что произойдет, если мой сервис не сможет завершить текущее выполнение в течение 10 минут. Новое событие таймера сработает ??А что происходит с моим текущим исполнением сервиса?Ценю вашу помощь.

1 Ответ

2 голосов
/ 21 сентября 2011

вы можете использовать таймеры в службе Windows, как это также указано в MSDN

Приложение службы рассчитано на длительную работу.Как таковой, он обычно опрашивает или отслеживает что-то в системе.Мониторинг настраивается в методе OnStart.Однако OnStart фактически не выполняет мониторинг.Метод OnStart должен вернуться в операционную систему после начала работы службы.Он не должен зацикливаться вечно или блокироваться.Чтобы настроить простой механизм опроса, вы можете использовать компонент System.Timers.Timer.В методе OnStart вы должны установить параметры компонента, а затем установить для свойства Enabled значение true.Затем таймер будет периодически вызывать события в вашем коде, и в это время ваша служба сможет осуществлять мониторинг.

, несмотря на вышесказанное, вам все равно необходимо создать свою логику, чтобы избежать как тупиковой ситуации, так и кода, указанного вСобытие Elapsed занимает больше времени, чем сам интервал.

Событие Elapsed возникает в потоке ThreadPool.Если обработка события Elapsed длится дольше, чем Interval, событие может возникнуть снова в другом потоке ThreadPool.Таким образом, обработчик события должен быть реентерабельным.

http://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.80%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...