使用WithEvents声明取消注册事件

时间:2012-05-08 08:47:29

标签: vb.net

使用WithEvents声明而不是AddHanlder时,对事件取消注册(removeHandler)的相应代码是什么?这只是将WithEvents变量设置为Nothing吗?这是否足够(框架明智)?

1 个答案:

答案 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对象具有相同的生命周期(即同时超出范围)或在应用程序的整个生命周期中存在,则无需担心关于它。