VB.NET RemoveHandler и анонимные методы - PullRequest
20 голосов
/ 16 сентября 2011

Как использовать RemoveHandler с анонимными методами?

Вот так я добавляю обработчик для MyEvent события класса MyClass:

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

КакЗатем я использую RemoveHandler, чтобы удалить обработчик для события MyEvent?

1 Ответ

29 голосов
/ 16 сентября 2011

В общем, если вам нужно отписаться от события, я бы порекомендовал не использовать лямбду, как это, и вместо этого использовать стандартный метод.но для отписки нужно хранить ссылку на него.Если вам необходимо отписаться от анонимного метода, как минимум, вы должны сохранить делегат в переменной, чтобы удалить его позже:

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

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription
...