21

如何使用RemoveHandler匿名方法?

这就是我为MyEvent类的事件添加处理程序的方式MyClass

AddHandler MyClass.MyEvent, Sub()
                                '...
                            End Sub

然后如何使用RemoveHandler来删除MyEvent事件的处理程序?

4

1 回答 1

31

一般来说,如果您需要取消订阅事件,我建议不要使用这样的 lambda,而是使用标准方法。

话虽如此,您仍然可以使用匿名方法,但您需要存储对它的引用以进行取消订阅。如果您必须取消订阅匿名方法,则至少应将委托存储在变量中以便稍后将其删除:

Dim subscription = Sub()
                            ' ...
                   End Sub

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription
于 2011-09-16T15:48:37.353 回答