他们是执行的一种方式吗 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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top