我有一个Timer类的问题,因为在调用Dispose()之前有一个定时器会触发的机会,因为您可能会从某个其他线程调用Dispose()。你可能有这样的事情:处理System.Timers.Timer的正确方法是什么?
Public Sub TimerTick() Handles itsTimer.Elapsed
Do Something
End Sub
然后从代码的其他地方,当你的应用程序做,你叫
itsTimer.Dispose()
我能想到这样做的唯一方法是:
Public Sub SomeMethod()
SyncLock(itsTimer.SynchronizingObject)
itsTimer.Dispose()
End SyncLock
ENd Sub
这不是一件好事情要做esp。因为我正在锁定我正在处理的对象。我可以创建自己的锁和同步锁,但有没有简单的方法?
如何取消注册“句柄”条款? – Denis 2011-04-18 18:43:52
@Denis - 你没有。用'AddHandler'注册事件。 – Oded 2011-04-18 18:44:59
实际上,即使使用Handles设置了事件,您也可以使用RemoveHandler取消注册。 – 2011-04-18 19:13:58