如何停止运行Timer?

时间:2012-11-15 08:16:09

标签: .net multithreading timer

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

会更容易吗?

3 个答案:

答案 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)