2010-01-30 31 views
3

这实际上是我见过但无法解释的显着差异。这些定时器的间隔设置为1ms(最低可用),但在最小化时,似乎更快?任何人都可以向我解释这种现象吗?如果可能,解释如何在窗口最大化时重现效果?.NET定时器控件在窗口最小化时运行得更快

+0

顺便说一句,你知道这是一个.NET的'定时器'控制而不是C#吗?在VB.NET,F#等中的相同控制 – 2010-01-30 04:21:33

+0

对不起,我暗示我使用的语言是C#。我碰巧命令它笨拙。 – 2010-01-30 04:48:15

回答

3

这是一个​​吗?

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

如果适用,可以尝试使用其他定时器类型之一,如System.Timers

Windows窗体Timer组件是 单线程的,并且被限制在55毫秒的 精度。如果 要求多线程定时器的精度更高,请使用System.Timers命名空间中的Timer类 。

Ref

2

如果我没有记错的话,最低分辨率,你可以得到一个System.Windows.Forms.Timer(我认为是你在这里使用的)是55毫秒。将其设置为1 ms基本上意味着它连续滴答。

当然,计时器并不能保证tick会到达指定的时间间隔。如果你的应用程序忙于做其他事情(比如重新绘制屏幕),那么它可能需要几个ms,或者在重负载下更多。如果计时器设置为1秒的时间间隔,则不会真正注意到这一点,但在最小窗口(55毫秒)内,您可能会发现。

当应用程序最小化时,其他事件发生之前可以中断计时器事件的次数更少。

+0

+1来自我。你的记忆力比我的好,我不得不查找计时器间隔! – 2010-01-30 04:42:54

相关问题