当我禁用计时器时,我会感到困惑。它会完成该过程,然后禁用或立即禁用而不完成过程吗?
例如
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,所以我需要在那段时间禁用定时器以避免覆盖任何内容,并且在定时器禁用之前它应该完成该功能代码。
答案 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
。