0

我的表单有许多我希望在运行时循环的计时器组件。我的目标是立即停止表单上的所有计时器。

我尝试调整一些代码,我必须对控件做同样的事情,但它似乎不起作用。

foreach (var tmr in this.components.Components.OfType<Timer>())
{
    tmr.Stop();
}

任何帮助,将不胜感激。

4

1 回答 1

1

停止 Winforms 计时器意味着不再将计时器消息 (WM_TIMER) 发布到消息队列。但是仍然在消息队列中的任何先前的 WM_TIMER 消息都将被处理。因此,即使在 Timer 停止后,当您更快地创建 Timer 消息时,也可能会处理多个 Tick 事件,然后它们可以被处理。

更新: 检查源显示 Winforms 计时器在计时器停止时会吞下 WM_TIMER 消息,然后不会触发任何 Tick 事件。所以这不是正确的答案。

于 2013-10-17T15:13:48.890 回答