Таймер System.Windows.Forms.Timer
использует насос сообщений пользовательского интерфейса для упорядочения события тика, служба по умолчанию не запускает насос сообщений, поэтому без небольшой дополнительной работы таймеры System.Windows.Forms.Timer
не будут работать.
System.Timers.Timer
- это серверный таймер, который вызывает событие в потоке, в котором вы его создаете (я думаю).Если это не работает, возможно, вы не запускаете таймер или таймер запускается в потоке, который немедленно заканчивается (как, например, ничто не поддерживает работу потока, поэтому он завершается).
http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
Таймер System.Threading.Timer
использует обратный вызов, который выполняется в потоке ThreadPool
и вообще не привязан к накачке сообщений, следовательно, это сработало.
Когда вы запускаете Application.Run(myForm)
впроект WinForms, этот вызов также запускает насос сообщений, который управляет сообщениями пользовательского интерфейса.Таймер Windows, который вы упоминаете, является компонентом пользовательского интерфейса и ожидает, что насос сообщений будет запущен, чтобы вызвать событие галочки в потоке пользовательского интерфейса.
Посмотрите здесь, чтобы запустить насос сообщений в службе Windows:
Насос сообщений в .NET Windows service
Дополнительная информация:
http://support.microsoft.com/kb/842793
В заключение я бы хотелпросто идите с System.Threading.Timer
классом.