【发布时间】:2012-06-09 10:12:21
【问题描述】:
如何让 System.Timers.Timer 每 15 分钟触发一次 Elapsed 事件,与系统时钟同步?换句话说,我希望它恰好在 xx:00、xx:15、xx:30、xx:45 触发(其中 xx 表示任何时间)
【问题讨论】:
-
你可以让它每秒过去一次,检查当前时间是00、15、30还是45,然后才转发事件。
-
'exactly' 不太可能由于其他系统活动...
-
@MitchWheat - 考虑到我们拥有的许多工具(而且与微秒无关),“不可能”不太可能。
-
首先将定时器的超时值设置为毫秒,相当于15分钟。然后检查系统时钟是否给出 mm(分钟)值,如 00、15、30 或 45。如果为 TRUE,则启动计时器。计时器将在以后的每个时间间隔内自动触发 Timer.Elapsed 函数。当然,这只是一个想法。
-
确保将 AutoReset 属性设置为 false。并且每次从 DateTime.Now 重新计算下一个间隔,这样它就保持准确。
标签: c# timer system sync clock