我还没有测试过这个。希望已经有人知道答案,这样我就不必写一个测试应用程序了,否则我会写的。:)
通常情况下,当我想比较时间时,我只是存储DateTime.Now
并在以后比较它。我认为当用户在中间更改用户系统时间时,这会导致错误的结果。
这让我想知道计时器是否表现出相同的方式。哪些.NET计时器依赖于设置的系统时间?考虑启动需要在一小时内到期的计时器。当我将系统时间向前调整一小时时,它会触发吗?
我从来没有真正关心过这种可能的行为,但在某些情况下它可能很重要。哪些计时器对此场景是安全的,哪些则绝对不是?
System.Windows.Forms.Timer
,System.Timers.Timer
, 或System.Threading.Timer
,也不会影响Stopwatch
或Environment.TickCount
。此外,使用Stopwatch
没有任何“额外开销”。它的值不会不断更新,而是惰性地评估(即只有在引用Ticks
时才会更新)。 - Jim MischelMSDN
或者“官方”来源中有吗? - OfirisSystem.Threading.Timer
基于 Windows Timer Queue Timers,可以查看相关文档。System.Timers.Timer
只是System.Threading.Timer
的一个包装器。System.Windows.Forms.Timer
是围绕 Windows 的SetTimer
和KillTimer
函数编写的包装器。对于这些函数的文档表明,它们不依赖于系统时间。 - Jim Mischel