C# 在C语言中获取系统时钟变化滴答声#
当秒、分钟、小时,。。。更改系统时钟,而不使用计时器,该计时器每毫秒检查一次属性是否已更改,并以最大1毫秒的延迟执行事件C# 在C语言中获取系统时钟变化滴答声#,c#,events,delegates,clock,C#,Events,Delegates,Clock,当秒、分钟、小时,。。。更改系统时钟,而不使用计时器,该计时器每毫秒检查一次属性是否已更改,并以最大1毫秒的延迟执行事件 因此,我希望避免轮询并在特定时间触发事件。您可以订阅。如果您的问题是:“我如何每整秒/分钟/小时执行一次委托?” 对于每分钟和每小时的间隔,您可以执行我在这个问题中的回答中所示的操作: 这应该相当准确,但不会精确到毫秒 对于秒间隔,我会使用一个简单的1秒间隔计时器。从用户的角度来看,如果操作在xx:xx:xx.000或xx:xx:xx.350执行,我认为没有太大区别。我
因此,我希望避免轮询并在特定时间触发事件。您可以订阅。如果您的问题是:“我如何每整秒/分钟/小时执行一次委托?” 对于每分钟和每小时的间隔,您可以执行我在这个问题中的回答中所示的操作:
对于秒间隔,我会使用一个简单的1秒间隔计时器。从用户的角度来看,如果操作在xx:xx:xx.000或xx:xx:xx.350执行,我认为没有太大区别。我在表单应用程序中通过将间隔设置为(1000-DateTime.Now.毫秒)解决了这个问题 在事件处理程序中,重置间隔以防止漂移
<handle event>
_timer1.Interval = (1000 - DateTime.Now.Millisecond);
_timer1.Interval=(1000-DateTime.Now.毫秒);
您的问题对于您想要的解决方案有点不清楚。这正是我需要的,这是一个明确的问题,我现在需要一个明确的答案!是的,宝贝!使用计时器是一种过激行为。根据文档,只有当用户更改系统时间时才会触发。这可能不是CommuSoft想要的。如果他想知道用户何时篡改时间,作为一种软件保护功能,dtb一般来说是正确的,但有一个细节使用这种1s间隔的方法似乎有点尴尬——应用程序可能开始计数,比如说每分钟950ms。将系统时钟与应用程序的时钟同时显示,切换到下一秒会有明显的延迟。为了解决这个问题,我会使用更小的定时器间隔,例如100-250ms,这取决于具体的使用情况。
<handle event>
_timer1.Interval = (1000 - DateTime.Now.Millisecond);