我遇到System.Threading.Timer的问题。我正在使用Windows服务中的时间安排一些操作。计时器在指定的dueTime时段后开始执行回调。 Windows服务在自动重启后启动。但是,我在系统重启后发现一件奇怪的事情 - 回调方法在指定时间段之前3或4分钟开始执行。这种行为可能是什么原因?
以下是示例代码:
TimeSpan timeToWait = this.StartTime - DateTime.Now;
Int64 msToSleep = (Int64)Math.Round(timeToWait.TotalMilliseconds);
_timer = new Timer(callback_method, null, msToSleep, MinutesScheduledInterval * 60000);
其中_timer是成员变量,StartTime - 计时器首次触发的时间。
答案 0 :(得分:2)
启动后多久你的服务开始了? Windows时间服务可以调整时钟以使其与域控制器同步。在此之前可能会采用您的DateTime.Now值。首先在启动时输入BIOS并检查时钟进行诊断。修复它与服务依赖。