вы можете использовать таймеры в службе 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