C# .NET计时器控件在最小化窗口时运行得更快

C# .NET计时器控件在最小化窗口时运行得更快,c#,.net,controls,timer,minimized,C#,.net,Controls,Timer,Minimized,这实际上是一个明显的区别,我已经看到了,但无法解释。这些计时器的间隔设置为1ms(可用的最低间隔),但当它被最小化时,它似乎跳得更快?有人能给我解释一下这种现象吗?如果可能,请解释如何在窗口最大化时再现效果?如果我没记错的话,您可以从System.Windows.Forms.Timer(我假设您在这里使用的)中获得的最小分辨率是55毫秒。将其设置为1毫秒基本上意味着它会持续滴答作响 当然,计时器不能保证滴答声会准确地到达指定的时间间隔。如果你的应用程序正忙于做其他事情(比如重新绘制屏幕),那么可

这实际上是一个明显的区别,我已经看到了,但无法解释。这些计时器的间隔设置为1ms(可用的最低间隔),但当它被最小化时,它似乎跳得更快?有人能给我解释一下这种现象吗?如果可能,请解释如何在窗口最大化时再现效果?

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

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


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

这是一个
窗体。计时器

我怀疑它运行得更快,更有可能是计时器触发事件得到了更及时的处理。虽然最小化了,但窗体windows的消息泵处理的消息可能会更少,这可能会导致处理计时器消息的时间片更大。还有最小计时器分辨率的问题

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

Windows窗体计时器组件是 单螺纹,并且仅限于 精确到55毫秒。如果你 需要一个带有 更高的精度,使用定时器类 在System.Timers命名空间中


.

顺便说一句,你知道这是一个.NET
定时器
控件而不是C#吗?在VB.NET、F#等中使用相同的控件。对不起,我是在暗示我使用的语言是C#。我只是碰巧笨拙地点了一道菜。你的记性比我好,我得查一下时间间隔!