定时器在C#中,定时器开始滴答?

时间:2009-12-10 22:36:19

标签: c# timer

我的问题是计时器何时开始计时。

让我们举个例子,配置为每秒打勾的计时器,然后我在hh:mm:ss:ms = 22:40:34.50开始我的程序。勾号将在第二轮开始?从17:40:35.00开始,还是从确切时间开始?因此,第一个标记位于17:40:35.50,下一个标记位于17:40:36.50

实际上我想要解决的是我想让函数每天都在05:00:00.00 AM上工作但只有一次。我建立了一个工作时间系统,有时工人忘记“关闭”他们的班次,所以在凌晨5点我想检查谁没有关闭,并对此做出错误。你觉得我怎么能解决问题?

2 个答案:

答案 0 :(得分:12)

Windows不是实时的,这意味着“每一秒”之类的东西将是近似值。我很确定,甚至没有保证,例如,一秒钟的计时器每分钟会发射60次,或者每小时正好发射3600次。

如果您需要在凌晨5:00执行特定任务,最好的办法是让计划任务在凌晨5点运行,或者是每隔几秒轮询时间并在5:00运行一次的服务我过世了。

答案 1 :(得分:4)

一旦调用Start方法,计时器就会启动。它不会等待一秒钟。计时器无法保证滴答之间的准确时间。如果你给它一个1秒的间隔,它将确保自最后一次打勾以来至少已经过了一秒。您可以以类似的方式解决您的问题,并在凌晨5点之后第一次计时器过去时每天执行一次上午5点的工作。或者,如果您确信维护系统的人员将了解计划任务,Aric TenEyck建议使用计划任务是解决问题的好方法。