.net windows服务中的计时器

.net windows服务中的计时器,.net,.net,我对System.Threading.Timer有问题。我正在使用windows服务中的时间计划一些操作。计时器在指定的时间段后开始执行回调。windows服务在重新启动后自动启动。然而,我在系统重新启动后观察到一件奇怪的事情——回调方法在指定时间段之前3或4分钟开始执行自己。这种行为的原因可能是什么 以下是示例代码: TimeSpan timeToWait = this.StartTime - DateTime.Now; Int64 msToSleep = (Int64)Math.Round(

我对System.Threading.Timer有问题。我正在使用windows服务中的时间计划一些操作。计时器在指定的时间段后开始执行回调。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-计时器首次触发的时间

您的服务在启动后多久启动?Windows Time服务可以调整时钟以使其与域控制器同步。您的DateTime.Now值可能会在该情况发生之前获取。首先通过在启动时输入BIOS并检查时钟来诊断此问题。使用服务依赖项修复此问题。

是否尝试记录此代码中涉及的所有变量的值?是的,当然。这里涉及的值是预期值。您所说的服务依赖性是什么意思?听着,我是在远程服务器上做这件事的,我没有能力按照你的建议去做。服务属性的Dependencies选项卡。如果你够不到键盘,那么本地管理员当然可以。你能给我一个当前服务可能依赖的服务的例子吗?这里的网络登录服务合适吗?我对你的服务了解不够。但我会先试试Windows时间。好的,我会试试。谢谢你的努力。