如果我创建并启动了一个System.Threading.Timer
:
Dim tcb As TimerCallback = New TimerCallback(AddressOf timerRoutine)
Dim t As Timer = New Timer(tcb, Nothing, DueTime, Period)
我该如何阻止它?
System.Timers.Timer
使用 a和 call会更容易Timer.Stop()
吗?
如果我创建并启动了一个System.Threading.Timer
:
Dim tcb As TimerCallback = New TimerCallback(AddressOf timerRoutine)
Dim t As Timer = New Timer(tcb, Nothing, DueTime, Period)
我该如何阻止它?
System.Timers.Timer
使用 a和 call会更容易Timer.Stop()
吗?
Change
您可以通过使用 Timeout.Infinite调用计时器上的方法来停止它:请参阅http://msdn.microsoft.com/en-us/library/yz1c7148(v=vs.80).aspx
t.Change(Timeout.Infinite, Timeout.Infinite)
一个选项是t.Dispose()
,它将处理Timer
并因此停止它。
如果Dispose
按如下方式调用,它应该等待 10 秒以等待所有排队的计时器回调完成,然后再处理对象:
Dim waitHnd As WaitHandle = New AutoResetEvent(False)
t.Dispose(waitHnd)
waitHnd.WaitOne(10000)
您可以使用 Change 方法来做到这一点。看看下面的注释:
http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx