VB.NET RemoveHandler и анонимные методы

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

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

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

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

Ответы

Ответ 1

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

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

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

AddHandler MyClass.MyEvent, subscription

' Later   
RemoveHandler MyClass.MyEvent, subscription