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

本文关键字:运行 调整 时钟 影响 系统 | 更新日期: 2023-09-27 17:50:00

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

会影响秒表的结果吗?

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

看情况。

Stopwatch依赖于Win32 QueryPerformanceCounter() ,如果可用。这个实现是允许时间变化的。

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

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

你可以责怪。net团队使用它不会修复缺陷:)

不,Stopwatch内部依赖于Win32 QueryPerformanceCounter(),它不与系统时钟绑定。

不,这不会影响它。

从MSDN:

Stopwatch通过计算底层计时器机制中的计时器刻度来测量经过的时间。如果安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器来测量运行时间。否则,Stopwatch类将使用系统计时器来测量经过的时间。使用Frequency和IsHighResolution字段来确定Stopwatch计时实现的精度和分辨率。