C#中是否有Monotonic WaitableTimer,甚至可以包装在Win32中?
目前我正在使用Win32 CreateWaitableTimer
,但如果系统时钟被修改,它将会使计时器值出现偏差并导致事情在计划发生之前或之后发生。
我在Windows XP中发现的唯一Monotonic时钟源是GetTickCount()
,但我希望不必使用它来编写我自己的计时器。
答案 0 :(得分:3)
SetWaitableTimer()支持两种设置到期时间的方法。正值设置绝对时间,它将受时钟影响。负值设置相对时间,不受时钟影响。你想要后者。
任何.NET计时器都不会受到时钟的影响。甚至没有时区或DateTime.Now更改。查看CultureInfo.ClearCachedData()。使用System.Threading.Timer应该是一个很好的管理替代品。