我正在使用 c# 中的 DispatchTimer 编写一个时钟应用程序,但由于某些原因,我的时钟似乎时不时地跳过 1 秒。
例如。 52 秒 -> 54 秒,跳过 53 秒。
在我看来,计时器并不是每秒都执行一次。
DispatcherTimer timer = new DispatcherTimer();
timer.Tick += DispatcherTimerEventHandler;
timer.Interval = new TimeSpan(0, 0, 0, 0, 1000);
or
timer.Interval = new TimeSpan(0, 0, 0, 1);
两者也不起作用。
来自DispatchTimer 的文档 https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchertimer(v=vs.110).aspx(强调我的):
定时器不能保证在时间间隔内准确执行
发生,但保证它们不会在时间之前执行
出现间隔。这是因为DispatcherTimer操作被放置
像其他操作一样在调度程序队列上。当。。。的时候
DispatcherTimer 操作的执行依赖于其他作业
队列及其优先级。
通常我会建议使用某种调度/cron 框架,例如 Quartz.NET,但这对于您的用例来说似乎是一个巨大的开销。
对于“时钟应用程序”,虽然很难知道你到底想做什么,但我会选择我自己的解决方案 - 意味着某种带有 while 循环或后台工作者 https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.110).aspx.
Even a timer https://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx可能会帮助你,例如在这个答案中 https://stackoverflow.com/a/2075022/1807643.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)