当使用 WithEvents 声明而不是 AddHanlder 时,取消注册 (removeHandler) 到 Event 的对应代码是什么?这仅仅是将 WithEvents 变量设置为 Nothing 吗?这是否足够(框架明智)?
问问题
125 次
1 回答
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
对象具有相同的生命周期(即同时超出范围)或存在于应用程序的整个生命周期,则无需担心。
于 2014-01-02T20:47:43.143 回答