窗口最小化时,.NET Timer控件运行得更快

时间:2010-01-30 03:59:31

标签: c# .net controls timer minimized

这实际上是我见过但却无法解释的显着差异。这些定时器的间隔设置为1ms(可用的最低值),但是当它被最小化时,它似乎更快?谁能向我解释这个现象?如果可能的话,解释如何在窗口最大化时重现效果?

2 个答案:

答案 0 :(得分:3)

这是Forms.Timer吗?

我怀疑它运行得更快,更有可能更及时地处理Timer触发事件。虽然最小化,但是Form窗口的消息泵可能会处理更少的消息,这可能会占用更大的时间片来处理Timer消息。还有最小的定时器分辨率。

如果适用,请尝试使用其他计时器类型之一,例如System.Timers

  

Windows窗体计时器组件是   单线程,仅限于   精度为55毫秒。如果你   需要多线程计时器   更高的准确性,使用Timer类   在System.Timers名称空间中。

Ref

答案 1 :(得分:2)

如果我没记错的话,你可以从System.Windows.Forms.Timer(我假设你在这里使用的)中得到的最小分辨率为55毫秒。将其设置为1 ms实质上意味着它会连续打勾。

当然,计时器并不能保证刻度线恰好以指定的间隔到达。如果你的应用正在忙于做其他事情(比如重新绘制屏幕),那么可能需要几毫秒,或者在重负载下显着更多。如果计时器设置为1秒的间隔,您将不会注意到这一点,但在最小窗口(55毫秒),您可能会这样做。

当应用程序最小化时,可以在它们触发之前中断计时器事件的事件更少。