21

RemoveHandler匿名メソッドで使用するにはどうすればよいですか?

MyEventこれは、クラスのイベントのハンドラーを追加する方法ですMyClass

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

次に、イベントRemoveHandlerのハンドラーを削除するにはどうすればよいですか?MyEvent

4

1 に答える 1

31

一般に、イベントのサブスクライブを解除する必要がある場合は、このようなラムダを使用せず、代わりに標準的な方法を使用することをお勧めします。

そうは言っても、引き続き匿名メソッドを使用できますが、サブスクリプションを解除するには、匿名メソッドへの参照を保存する必要があります。匿名メソッドのサブスクライブを解除する必要がある場合は、少なくとも、デリゲートを変数に格納して後で削除する必要があります。

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

AddHandler MyClass.MyEvent, subscription

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