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

时间:2012-12-29 07:06:34

标签: c# .net multithreading real-time

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

会影响秒表结果吗?

3 个答案:

答案 0 :(得分:7)

取决于。

Stopwatch仅依赖于Win32 QueryPerformanceCounter() (如果可用)。这个实现是时间容忍的。

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

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

你可以责怪.Net团队使用这个won't fix defect:)

答案 1 :(得分:5)

不,内部秒表依赖于与系统时钟无关的Win32 QueryPerformanceCounter()

答案 2 :(得分:1)

不,它不会影响它。

来自MSDN

  

秒表通过计算基础计时器机制中的计时器滴答来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量经过的时间。   否则,Stopwatch类使用系统计时器来测量经过的时间。使用Frequency和IsHighResolution字段确定秒表计时实施的精度和分辨率。