我还没有测试过这个。我希望有人已经知道答案,所以我不必编写测试应用程序,否则我会的。 :)
通常当我想比较时间时,我只是存储DateTime.Now
并在以后比较它。我相信当用户在两者之间的某个位置更改用户的系统时间时,这会产生错误的结果。
这让我想知道计时器的行为是否相同。哪些 .NET 计时器依赖于设置的系统时间?考虑启动一个需要在一小时内流逝的计时器。将系统时间调快一小时会触发吗?
我从来没有真正关心过这种可能的行为,但在某些情况下它可能很重要。哪些计时器在这种情况下是安全的,哪些绝对不是?
最佳答案
我正在尝试解决类似的问题。我原来使用 System.Diagnostic.StopWatch
替换所有 DateTime.Now
. StopWatch
将使用高频时钟(如果存在)。因此,它更准确并且不受系统时钟变化的影响。但是,如果不存在高频时钟,它将再次使用系统时钟。
根据我的测试,我所有的机器都有高频时钟,包括VM中的机器。
关于定时器,据我所知,它不依赖于系统时钟。但是,您并不真的想使用 Timer 来跟踪时间,因为 Timer 回调事件可能会被其他一些事件延迟。
关于c# - 哪些定时器依赖于系统时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5128027/