.net - .net 计时器有多可靠?

标签 .net timer

我正在考虑在 Windows 服务中使用 System.Timers.Timer。我想知道它们的可靠性和准确性。特别是:

  • 是否有任何关于它们运行频率的保证?
  • 当处理器或内存过载时会发生什么?在这种情况下, ElapsedEventArgs.SignalTime 是否总是准确的?
  • 如果一个计时器运行很长时间,当考虑到系统时钟的不准确性而对系统时间进行更正时会发生什么?

  • 更新:感谢您到目前为止的答案。我希望对我在原始问题中详述的三个问题得到更具体的答案。

    最佳答案

    什么对你来说是准确的?
    普通窗口计时器的精度约为 100Hz。如果您想要更准确的内容,请查看 QueryPerformanceTimer(System.Diagnostics.Stopwatch 使用它)。它在短时间内非常好且非常准确,但随着 CPU 频率的变化(电源管理),它会失去同步。

    此外,我看到系统时钟每天漂移几分钟,所以我们必须安装 NTP 实用程序并安排它(讽刺的是)定期运行。

    基本上,我们从未在 windows 机器上实现亚毫秒级的时间精度,即使有些人尝试使用主时钟作为基线和 QuerperformanceTimer 作为一种差分计时器。从来没有正确工作。

    关于.net - .net 计时器有多可靠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/897108/

    相关文章:

    c# - C# 可移植类库中用于序列化的代理类型

    sql - LINQ 订单依据。它总是返回相同的有序列表吗?

    javascript - 我的 clearTimeout 函数不起作用

    c# - 计时器控制间隔

    Java Swing 运行后重启定时器

    c# - 如何使用 C# 控制台应用程序获取回收站中的文件列表

    .net - 我怎么知道我是否没有处理过我的 .NET 代码可能抛出的一些未经检查的异常?

    c# - 如何重启窗口服务

    c++ - 可移植库中的 timer_create 和 TimerQueueTimer 功能(如 boost)

    android - 延迟 Action 和 BroadcastReceiver