我正在考虑在 Windows 服务中使用 System.Timers.Timer 。我想知道它们的可靠性和准确性如何。尤其:
- 对于它们的运行频率有任何保证吗?
- 当处理器或内存过载时会发生什么?在这种情况下,ElapsedEventArgs.SignalTime 是否始终准确?
- 如果计时器运行很长时间,考虑到系统时钟的不准确度而对系统时间进行修正时会发生什么情况?
更新:感谢迄今为止的回答。我希望对我在最初的问题中详细说明的三个问题得到更具体的答案。
什么对你来说是准确的?
普通windows定时器的精度约为100Hz。如果您想要更准确的结果,请查看 QueryPerformanceTimer(System.Diagnostics.Stopwatch 使用它)。它在短时间内非常出色且非常准确,但随着 CPU 频率的变化(电源管理),它会变得不同步。
另外,我发现系统时钟每天都会漂移几分钟,因此我们必须安装 NTP 实用程序并安排它(讽刺的是)定期运行。
基本上,我们从未在 Windows 机器上达到亚毫秒时间精度,即使尝试使用主时钟作为基准并使用 QuerperformanceTimer 作为差分计时器也是如此。从来没有工作正常过。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)