这实际上是我见过但却无法解释的显着差异。这些定时器的间隔设置为1ms(可用的最低值),但是当它被最小化时,它似乎更快?谁能向我解释这个现象?如果可能的话,解释如何在窗口最大化时重现效果?
答案 0 :(得分:3)
这是Forms.Timer
吗?
我怀疑它运行得更快,更有可能更及时地处理Timer触发事件。虽然最小化,但是Form窗口的消息泵可能会处理更少的消息,这可能会占用更大的时间片来处理Timer消息。还有最小的定时器分辨率。
如果适用,请尝试使用其他计时器类型之一,例如System.Timers
Windows窗体计时器组件是 单线程,仅限于 精度为55毫秒。如果你 需要多线程计时器 更高的准确性,使用Timer类 在System.Timers名称空间中。
答案 1 :(得分:2)
如果我没记错的话,你可以从System.Windows.Forms.Timer
(我假设你在这里使用的)中得到的最小分辨率为55毫秒。将其设置为1 ms实质上意味着它会连续打勾。
当然,计时器并不能保证刻度线恰好以指定的间隔到达。如果你的应用正在忙于做其他事情(比如重新绘制屏幕),那么可能需要几毫秒,或者在重负载下显着更多。如果计时器设置为1秒的间隔,您将不会注意到这一点,但在最小窗口(55毫秒),您可能会这样做。
当应用程序最小化时,可以在它们触发之前中断计时器事件的事件更少。