开发者

Timer in windows service

I have an issue with System.Threading.Timer. I am scheduling some actions using a time in a windows service. The timer starts executing the callback after a specified dueTime period. The windows service starts up after reboot automatically. However, I have observed a strange thing after a system reboot- the callback method starts executing itself 3 or 4 minutes before the specified period. What might be the reason for such behavior?

Here is the sample code:

Ti开发者_C百科meSpan timeToWait = this.StartTime - DateTime.Now;
Int64 msToSleep = (Int64)Math.Round(timeToWait.TotalMilliseconds);
_timer = new Timer(callback_method, null, msToSleep, MinutesScheduledInterval * 60000);

where _timer is a member variable, StartTime - the time when the timer should first fire.


How soon after boot does your service start? The Windows Time service can adjust the clock to get it in sync with a domain controller. Your DateTime.Now value might be taken before that happens. Diagnose this first by entering the BIOS at boot-up and checking the clock. Fix it with a service dependency.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜