Служба Windows System.Timers.Timer не запускается

У меня есть служба Windows, написанная на C #, которая предназначена для выполнения задачи каждые несколько минут. Я использую для этого System.Timers.Timer , но он никогда не срабатывает. Я просмотрел много разных сообщений здесь, на SO и в других местах, и не вижу, что не так с моим кодом.

Вот мой код, в котором для ясности удалены элементы, не связанные с таймером ...

namespace NovaNotificationService
{
    public partial class NovaNotificationService : ServiceBase
    {
        private System.Timers.Timer IntervalTimer;
        public NovaNotificationService()
        {
            InitializeComponent();
            IntervalTimer = new System.Timers.Timer(60000);  // Default in case app.config is silent.
            IntervalTimer.Enabled = false;
            IntervalTimer.Elapsed += new ElapsedEventHandler(this.IntervalTimer_Elapsed);
        }

        protected override void OnStart(string[] args)
        {
            // Set up the timer...
            IntervalTimer.Enabled = false;
            IntervalTimer.Interval = Properties.Settings.Default.PollingFreqInSec * 1000;
            // Start the timer and wait for the next work to be released...
            IntervalTimer.Start();
        }

        protected override void OnStop()
        {
            IntervalTimer.Enabled = false;
        }

        private void IntervalTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {   // Do the thing that needs doing every few minutes...
            DoWork();
        }
    }
}

Я действительно ломаю голову над этим. Может ли кто-нибудь заметить, что за глупость я ошибаюсь?

РЕДАКТИРОВАТЬ: По предложению, я добавил IntervalTimer.Enabled = true; перед IntervalTimer.Start (); в методе OnStart службы. Это не решает проблему.

Я добавил в службу запись трассировки файлов для подтверждения некоторых внутренних функций, и я точно знаю, что значение Timer.Enabled истинно к моменту завершения OnStart ().

31
задан Joel Brown 2 September 2012 в 11:46
поделиться