我在 msdn 上读到,虽然计时器不能保证以确切的间隔(在我的情况下为 1 秒)触发,但它们不会在间隔之前触发。
一台电脑上的计时器工作正常(Windows 7),而另一台电脑(Windows Server 2003)上的每个0.99999936 seconds
.
我真的很感兴趣为什么会这样。
我注意到了这一点,因为我有代码计数秒到newSeconds = newSeconds + delta.Seconds
Where delta
isDateTime.Now - lastTime
秒部分显示1
在 Windows 7 和0
Windows Server 2003 上。
解决方案是 read totalseconds
,但我仍然想知道为什么它之前会触发。
谁能详细说明这一点?
编辑
我实际上在两个不同的 Windows 2003 电脑上发生了这种情况。我想更深入地了解操作系统之间是否存在差异,.net framework 4 对于 7 和 2003 是否不同?或者人们可能知道的任何其他偏差?计时器是如何实现的,可能是硬件相关问题吗?
与此相反: C# 计时器在它们的间隔时间之前被触发, 我一直在发生它,在每个滴答声中。无需长时间运行。谢谢
编辑
public void OnTick(object sender, EventArgs e)
{
var delta = DateTime.Now - _lastTime;
DoStuff
_lastTime = DateTime.Now
}