3

这实际上是我见过但无法解释的明显差异。这些计时器的间隔设置为 1 毫秒(可用的最低值),但是虽然它被最小化,但它似乎更快?谁能向我解释这种现象?如果可能,请解释如何在窗口最大化时重现效果?

4

2 回答 2

3

这是一个Forms.Timer吗?

我怀疑它运行得更快,更有可能以更及时的方式处理 Timer 触发事件。在最小化的同时,表单窗口的消息泵处理的消息可能会更少,这可能会占用更大的时间片来处理 Timer 消息。还有最小定时器分辨率的问题。

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

Windows 窗体计时器组件是单线程的,精度限制为 55 毫秒。如果您需要更准确的多线程计时器,请使用 System.Timers 命名空间中的 Timer 类。

参考

于 2010-01-30T04:05:16.667 回答
2

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

当然,计时器并不能保证滴答声会在指定的时间间隔内准确到达。如果您的应用正忙于做其他事情(例如重绘屏幕),那么它可能需要更多毫秒,或者在重负载下需要更多时间。如果计时器设置为 1 秒的间隔,您不会真正注意到这一点,但在最小窗口(55 毫秒)时,您可能会注意到。

当应用程序最小化时,在它们触发之前可以中断定时器事件的其他事件就会减少。

于 2010-01-30T04:05:04.350 回答