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

当秒,分钟,小时……在系统时钟中发生变化时,它们是在C#中执行delegateevent的方法,而不使用计时器检查属性是否已更改并且延迟执行事件时每毫秒检查一次最大毫秒。

因此,我想避免在某个时间进行投票和发射事件。

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

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

  • 如何在C#中的特定时钟时间生成事件?

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

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

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

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

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

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

   _timer1.Interval = (1000 - DateTime.Now.Millisecond);