Possible Duplicate:
System.Timer elapsed event seems to fire late for short intervals in .Net
I use System.Timers.Timer in my windows service. Interval set to 60000 ms, but every next elapse, timer interval increases on some ms..Here example of log:
2011-09-05 00:00:37,177 [80] INFO -
timer_Elapsed;
2011-09-05 00:01:37,187 [8] INFO -
timer_Elapsed;
2011-09-05 01:24:38,279 [71] INFO -
timer_Elapsed;
But I need to elapse timer in 37 seconds, as example, but after work some time, we have elapse timer in 38, 39, 40 .. sec..
I don't need very precision timer, but i need to elapse 37 +- 1sec every time..
How i can resolve this problem???
I one time set Interval property in:
protected override void OnStart(string[] args)
{
log4net.Config.XmlConfigurator.Configure();
EmailReminderService.Logger.Info("Service started");
_timer.Interval =Convert.ToInt32(ConfigurationManager.AppSettings["Interval"]);
_timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
_timer.Enabled = true;
}
private void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
EmailReminderService.Logger.Info("timer_Elapsed;");
EmailReminderManager manager = new EmailReminderManager();
manager.EmailReminderProcessing();
}
In timer elapsed method not use _timer object..