1

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

一方面,线程化的后台循环具有非常高的 CPU 使用率,而Timer具有非常高的滴答率的循环在 Windows 任务管理器中没有任何效果。

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

4

2 回答 2

3

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

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

  • 您永远无法获得超过 50 毫秒的分辨率。
  • 如果您的系统处于负载状态(例如重绘、在 RDP 链接上运行等),您可能每 500 毫秒或更长时间收到一次 WM_TIMER 消息,无论您设置的间隔有多低。
  • WM_TIMER 消息是合成消息,如果您的消息队列被其他消息淹没,则可能在很长一段时间内根本无法传递到您的应用程序。
  • 如果您的计时器方法执行时间超过一个计时器间隔,计时器将“跳过”该消息,即在您从第一个返回之前您不会收到另一个 WM_TIMER 消息。换句话说,您永远不会依次收到两个 WM_TIMER 消息。
于 2008-12-01T21:08:10.320 回答
1

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

我发现微软的这篇定时器比较文章在比较这些类型的东西时也很有帮助。

但总而言之,它们似乎并没有乱七八糟。

于 2008-12-01T20:58:10.810 回答