当前位置: 首页 > 编程语言 > C#

C#定时器每X秒触发一次,但与实时保持同步(即无漂移)分享

时间:2023-04-10 21:24:48 C#

C#定时器每X秒触发一次,但与实时保持同步(即无漂移).NETTimer确保事件之间没有“漂移”?也就是说,如果您将计时器设置为每X秒关闭一次,它会不会在运行几天后漂移,即确保一天中接近X秒的事件数量与其应有的数量保持同步?如果没有,是否有一个众所周知的代码示例在C#中包装一个Timer函数来执行此操作?很抱歉只给你一个quartz.net的链接,但它是一个完全合格的企业,经过测试......图书馆......你不需要重新发明轮子:)如果你担心开销,你的定义是什么高架?是文件大小(二进制文件大约0.5mb)还是逻辑开销。对于逻辑部分:我认为实施他们的IJob可以很好地强制执行更好的消费者代码。我不是内联方法的好朋友(比如一个例子,因为当计时器结束时你可能会发出指针)-类会给你更多的可能性,并再次强制更好的oop,域设计,......。但是:用quartz.net做Console.WriteLine(...)会有点矫枉过正...?我假设你已经尝试过一些东西并且它漂移了。如果你想从小时(5、10、15、20..)开始每5秒触发一次,你可以将你的定时器设置为触发一次,然后在你的回调中,重置定时器以在DateTimeFiredwhen.Now+.到下一个5秒间隔的秒数。只要您的时钟正确,这就可以防止任何漂移。上面类似的内容是C#学习教程:C#计时器每X秒触发一次,但与实时保持同步(即没有漂移)如果它对任何人有用并且需要了解更多关于C#学习教程,我希望分享你会更加关注它——System.Timers.Timertimer=newTimer();voidInit(){timer.Elapsed+=timer_Elapsed;intwait=5-(DateTime.Now.Second%5);timer.Interval=wait*1000;定时器。开始();}voidtimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse){timer.Stop();intwait=DateTime.Now.Second%5;timer.Interval=wait*1000;计时器.Start();}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: