2010-01-30 38 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

相關問題