C#计时器在间隔时间之前被触发
发布时间:2020-12-15 17:50:30 所属栏目:百科 来源:网络整理
导读:在 Windows服务中使用System.Threading.Timer(.NET 2.0)时,我们会遇到以下问题. 有大约12个不同的定时器对象.. 每个定时器都有到期的时间和间隔.这样设置正确. 观察到3?4小时后,定时器在其间隔过去之前开始发信号.例如,如果计时器应该在4:59:59发出信号,那么
在
Windows服务中使用System.Threading.Timer(.NET 2.0)时,我们会遇到以下问题.
>有大约12个不同的定时器对象.. 有人可以告诉我这个行为的原因是什么? 谢谢, 解决方法
很好的问题…这就是原因:
“计时”是一个棘手的事情,当涉及到电脑…你永远不能依靠“间隔”是完美的.有些电脑每隔14到15毫秒就会“勾选”定时器,比一般的频率要少一些. 所以: Thread.Sleep(1); 可能需要1到30毫秒的时间运行. 相反,如果你需要一个更精确的计时器 – 你必须捕获你开始的DateTime,然后在你的计时器中,你将不得不通过减去DateTime.Now和你的原始时间来检查是否“运行时间”你的代码 以下是您需要做的一些示例代码: DateTime startDate = DateTime.Now; 然后,启动您的计时器,间隔设置为1毫秒.然后,在你的方法: if (DateTime.Now.Subtract(startDate).TotalSeconds % 3 == 0) { // This code will fire every 3 seconds. } 上面的代码将每3秒钟忠实地发射.你可以让它运行10年,它仍将每3秒触发一次. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |