C#中的单调WaitableTimer

时间:2010-07-08 16:37:16

标签: c# timer

C#中是否有Monotonic WaitableTimer,甚至可以包装在Win32中?

目前我正在使用Win32 CreateWaitableTimer,但如果系统时钟被修改,它将会使计时器值出现偏差并导致事情在计划发生之前或之后发生。

我在Windows XP中发现的唯一Monotonic时钟源是GetTickCount(),但我希望不必使用它来编写我自己的计时器。

1 个答案:

答案 0 :(得分:3)

SetWaitableTimer()支持两种设置到期时间的方法。正值设置绝对时间,它将受时钟影响。负值设置相对时间,不受时钟影响。你想要后者。

任何.NET计时器都不会受到时钟的影响。甚至没有时区或DateTime.Now更改。查看CultureInfo.ClearCachedData()。使用System.Threading.Timer应该是一个很好的管理替代品。