在C#中获得系统时钟更改刻度

时间:2009-09-16 16:17:01

标签: c# events delegates clock

当系统时钟中的秒,分,小时......发生变化时,他们是否可以在C#中执行delegateevent,而不使用每毫秒检查一次的计时器该属性已更改并执行该事件,延迟时间最长为一毫秒。

因此我想避免民意调查并在某个时间点击事件。

3 个答案:

答案 0 :(得分:7)

如果您的问题是:“如何每隔一分钟/每小时/每小时执行一次代理?”

对于分钟和小时的间隔,您可以在我的答案中执行此SO问题中显示的内容:

这应该相当准确,但不会精确到毫秒。

对于第二个间隔,我会使用一个简单的1秒间隔的Timer。从用户的角度来看,我认为如果动作在xx:xx:xx.000或xx:xx:xx.350执行,则没有太大区别。

答案 1 :(得分:6)

您可以订阅SystemEvents.TimeChanged。系统时钟改变时会触发。

答案 2 :(得分:3)

我通过将间隔设置为(1000 - DateTime.Now.Millisecond)在表单应用中解决了这个问题

        _timer1 = new System.Windows.Forms.Timer();
        _timer1.Interval = (1000 - DateTime.Now.Millisecond);
        _timer1.Enabled = true;
        _timer1.Tick += new EventHandler(updateDisplayedTime);

并在事件处理程序中重置间隔以防止漂移。

        <handle event>
        _timer1.Interval = (1000 - DateTime.Now.Millisecond);