使用WithEvents声明而不是AddHanlder时,对事件取消注册(removeHandler)的相应代码是什么?这只是将WithEvents变量设置为Nothing吗?这是否足够(框架明智)?
答案 0 :(得分:0)
假设我有一个表单,我只会显示一段时间,然后它会消失,但它会订阅我的主域模型以获取有关更改的更新。我可能有这样的代码:
Private WithEvents _model As WeatherModel
Public Sub New(model As WeatherModel)
_model = model
End Sub
Private Sub WeatherModel_Update(sender As Object, e As WeatherUpdateEventArgs) _
Handles _model.WeatherUpdate
'Handle updated weather conditions
End Sub
由于我引用的模型将使我生效,如果我不取消订阅我的事件处理程序,它将导致此表单不被垃圾收集。在这种情况下,我想确保在我的_model = Nothing
事件处理程序中FormClosing
。
如果表单和WithEvents
对象具有相同的生命周期(即同时超出范围)或在应用程序的整个生命周期中存在,则无需担心关于它。