禁用计时器会发生什么?

时间:2011-12-22 12:04:40

标签: vb.net

当我禁用计时器时,我会感到困惑。它会完成该过程,然后禁用或立即禁用而不完成过程吗?

例如

Private Sub MyTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyTimer.Tick 
    MyTimer.Enabled = False
    getMessage()         
    MyTimer.Enabled = True
End Sub

我想从其他地方运行getMessage,所以我需要在那段时间禁用定时器以避免覆盖任何内容,并且在定时器禁用之前它应该完成该功能代码。

3 个答案:

答案 0 :(得分:1)

阅读this MSDN有关Timer的{​​{1}}媒体资源的文章。它声明

  

调用Start方法与将Enabled设置为true相同。同样,调用Stop方法与将Enabled设置为false相同。

因此,在回答您的问题时,它会在您停用时停止Enabled

答案 1 :(得分:1)

Enabled Property仅控制何时触发下一个事件。上面的三行将执行您解释的操作:调用getMessage并在调用返回后启动Timer。

答案 2 :(得分:0)

如果您的代码当前正在执行MyTimer_Tick并且您禁用了计时器,那么它当然会完成MyTimer_Tick。只有下一次调用MyTimer_Tick才会发生。 禁用计时器后,您将不得不等待,以防您的回调当前正在执行。您可以使用Thread.Sleep()忙碌等待或使用AutoResetEvent