17
如何使用匿名方法使用RemoveHandler?VB.NET RemoveHandler&匿名方法
这是我如何添加一个处理MyEvent事件类的MyClass的
AddHandler MyClass.MyEvent, Sub()
...
End Sub
如何再使用RemoveHandler删除的处理程序中MyEvent事件
如何使用匿名方法使用RemoveHandler?VB.NET RemoveHandler&匿名方法
这是我如何添加一个处理MyEvent事件类的MyClass的
AddHandler MyClass.MyEvent, Sub()
...
End Sub
如何再使用RemoveHandler删除的处理程序中MyEvent事件
在一般来说,如果您需要退订事件,我会建议不要使用这样的lambda,而是使用标准方法。
这就是说,你仍然可以使用匿名方法,但是你需要存储一个对它的引用来取消订阅。如果您必须取消订阅匿名方法,则至少应将代表存储在变量中以便稍后删除它:
Dim subscription = Sub()
' ...
End Sub
AddHandler MyClass.MyEvent, subscription
' Later
RemoveHandler MyClass.MyEvent, subscription
使感官。如果是这种情况,那么当我必须在稍后将其删除时,使用匿名方法毫无意义。 – acermate433s
@ acermate433s:的确如此,这就是为什么我建议使用标准方法。 lambda,thoguh的一个优点是你可以关闭局部变量而不是将它们提升到课程级别,这在有时可能有用... –