VB.NET RemoveHandler和匿名方法

ace*_*33s 20 vb.net anonymous-methods addhandler

如何使用RemoveHandler匿名方法?

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

AddHandler MyClass.MyEvent, Sub()
                                '...
                            End Sub
Run Code Online (Sandbox Code Playgroud)

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

Ree*_*sey 29

通常,如果您需要取消订阅该事件,我建议不要使用这样的lambda,而是使用标准方法.

话虽这么说,你仍然可以使用匿名方法,但你需要存储对它的引用以取消订阅.如果必须取消订阅匿名方法,则至少应将代理存储在变量中以便以后删除它:

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

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription
Run Code Online (Sandbox Code Playgroud)