题
他们是执行的一种方式吗 delegate
或者 event
在 C# 中,当秒、分钟、小时……更改系统时钟,而不使用每毫秒检查属性是否已更改的计时器,并以最大延迟一毫秒执行事件。
因此我想避免 轮询 并在特定时间触发事件。
解决方案
如果你的问题是: “我如何每整秒/分钟/小时执行一个委托?”
对于分钟和小时间隔,您可以执行类似于我在这个问题中的回答所示的操作:
这应该相当准确,但不会精确到毫秒。
对于第二个间隔,我会使用一个简单的 1 秒间隔的计时器。从用户的角度来看,我认为如果操作在 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);
并在事件处理程序中重置间隔以防止漂移。
<handle event>
_timer1.Interval = (1000 - DateTime.Now.Millisecond);
不隶属于 StackOverflow