如果我已创建并启动了System.Threading.Timer
:
Dim tcb As TimerCallback = New TimerCallback(AddressOf timerRoutine)
Dim t As Timer = New Timer(tcb, Nothing, DueTime, Period)
如何阻止它?
使用System.Timers.Timer
并致电Timer.Stop()
吗?
答案 0 :(得分:1)
您可以通过使用Timeout.Infinite调用计时器上的方法Change
来停止它:
见http://msdn.microsoft.com/en-us/library/yz1c7148(v=vs.80).aspx
t.Change(Timeout.Infinite, Timeout.Infinite)
答案 1 :(得分:0)
您可以使用Change方法执行此操作。请看下面的评论:
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx
答案 2 :(得分:0)
一个选项是t.Dispose()
,它会处置Timer
,因此会将其停止。
如果按如下方式调用Dispose
,则在处理对象之前,所有排队的计时器回调应等待10秒:
Dim waitHnd As WaitHandle = New AutoResetEvent(False)
t.Dispose(waitHnd)
waitHnd.WaitOne(10000)