系统时钟调整会影响在C#中运行秒表吗?

Bop*_*Bop 7 .net c# multithreading real-time

假设我已经Stopwatch在我的代码中运行,在中间,其他一些应用程序已经改变了系统时钟(我的服务器上的域时间每秒同步).

它会影响秒表结果吗?

小智 7

这取决于.

Stopwatch当Win32 QueryPerformanceCounter() 可用时才依赖它.此实现是时间更改容忍的.

如果高分辨率计数器不可用,则Stopwatch回退到系统计时器,基本上是DateTime.UtcNow.Ticks呼叫.在这种不幸的情况下,Stopwatch结果将受到时间(而不是时区)变化的影响.

正如引用的MSDN文章中所述,您可以使用IsHighResolution字段检查高分辨率计数器是否可用.

你可以怪.Net团队使用这个不会修复缺陷 :)


Ini*_*eer 5

否,秒表在内部依赖于Win32 QueryPerformanceCounter(),它与系统时钟无关。