我有一个问题,关于我在一些项目中的某些VB.NET代码中看到的东西,我不得不接管。在一种形式中,开发者已经宣布了一个非常简单的15秒计时器。为什么要删除定时器的处理程序?
Private WithEvents mtmrManualDecision As New System.Timers.Timer(15000)
现在,我知道,这个计时器将触发mtmrManualDecision_Elapsed事件已通过mtmrManualDecision.Start已经启动每15秒后()。我也熟悉通过mtmrManualDecision.Stop()来停止这个计时器。但是,我在窗体的某些部分看到了这行代码(例如点击按钮或窗体关闭时)。
RemoveHandler mtmrEvaluation.Elapsed, AddressOf mtmrEvaluation_Elapsed
我相信这基本上是停止计时器。为什么这样做而不是停止?它不会被添加回来或在此之后再次使用,所以我想知道为什么需要这样做。我通常不使用RemoveHandler,除非我在自己的代码中实际使用了AddHandler。我相信使用“WithEvents”的计时器的声明会自动为Elapsed事件添加一个处理程序,而他只是想将其删除。这真的是必要的,不会收集垃圾收集处理像处理其他事件一样的处理程序,等等)?
任何澄清或想法,将不胜感激。非常感谢你。