0

如果我创建并启动了一个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()吗?

4

3 回答 3

1

Change您可以通过使用 Timeout.Infinite调用计时器上的方法来停止它:请参阅http://msdn.microsoft.com/en-us/library/yz1c7148(v=vs.80).aspx

t.Change(Timeout.Infinite, Timeout.Infinite)
于 2012-11-15T08:20:30.247 回答
0

一个选项是t.Dispose(),它将处理Timer并因此停止它。

如果Dispose按如下方式调用,它应该等待 10 秒以等待所有排队的计时器回调完成,然后再处理对象:

Dim waitHnd As WaitHandle = New AutoResetEvent(False)
t.Dispose(waitHnd)
waitHnd.WaitOne(10000)
于 2012-11-15T09:02:24.140 回答
0

您可以使用 Change 方法来做到这一点。看看下面的注释:

http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx

于 2012-11-15T08:24:14.153 回答