有谁知道System.Windows.Forms.Timer如何影响主机应用程序和系统?

时间:2008-12-01 20:52:38

标签: c# timer cpu-usage

有人知道System.Windows.Forms.Timer如何影响主机应用程序和系统吗?

一方面,线程化的背景循环具有非常高的CPU使用率%,而具有非常高的刻度率的Timer在Windows任务管理器中显示无效。

高速率计时器是否会使Windows消息循环混乱,或者?

2 个答案:

答案 0 :(得分:3)

定义“高滴答率计时器”:)。

依赖于WM_TIMER(例如Windows.Forms)的计时器组件的问题是多方面的:

  • 能够获得超过50毫秒的分辨率。
  • 如果您的系统处于负载状态(例如重度重绘,在RDP链接上运行等),无论您设置的间隔有多低,您都可能每500毫秒或更长时间收到一次WM_TIMER消息。
  • WM_TIMER消息是合成消息,如果您的消息队列充满其他消息,则可能无法长时间将消息传递到您的应用程序。
  • 如果您的计时器方法需要超过一个计时器间隔执行,计时器将“跳过”该消息,即在您从第一个返回之前不会再收到另一个WM_TIMER消息。换句话说,您将永远不会依次获得两个WM_TIMER消息。

答案 1 :(得分:1)

总的来说,我没有注意到在我的应用程序中使用计时器组件有很多负面的挫折,它们比其他方法更有效,资源更好。

我发现微软的这篇Timer Comparison文章在比较这些类型的内容时也很有帮助。

但它的长短不一,它们似乎并没有太多混乱。