2012-05-08 2 views
1

При использовании объявления WithEvents вместо AddHanlder, какой код должен быть отменен для отмены (removeHandler) для события? Это просто установить переменную WithEvents в Nothing? Достаточно ли этого (Framework wise)?Отменить регистрацию события, используя объявление WithEvents

+1

Вы не можете незарегистрировать события статического связывания. – adatapost

+0

Почему вы пытаетесь это сделать? –

+0

@AVD: Почему вы говорите это как комментарий? Это ответ? Вы имеете в виду, что 2 объекта связаны вечно? –

ответ

0

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

Private WithEvents _model As WeatherModel 

Public Sub New(model As WeatherModel) 
    _model = model 
End Sub 

Private Sub WeatherModel_Update(sender As Object, e As WeatherUpdateEventArgs) _ 
    Handles _model.WeatherUpdate 

    'Handle updated weather conditions 
End Sub 

Поскольку модель у меня есть ссылка на утаишь-жить со мной, если я не отписать свой обработчик события, он будет вызывать эту форму, чтобы не быть мусора. В этом случае я хочу, чтобы я сделал _model = Nothing в своем обработчике событий FormClosing.

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

Смежные вопросы