Как убрать обработчик на контроль - PullRequest
1 голос
/ 28 сентября 2011

У меня есть элемент управления, который имеет в конструкторе

_myWebService.ForwardMessageCompleted + = new EventHandler (OnForwardMessageCompleted);

private void OnForwardMessageCompleted(object sender, AsyncCompletedEventArgs e)
        {
            activity.IsActive = false;
            if (e.Error == null)
            {
                RadWindow.Alert("The message has been forwarded");
            }
        }

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

_myWebService.ForwardMessageCompleted

Как я могу удалить обработку этого события?

1 Ответ

2 голосов
/ 28 сентября 2011

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

Вы хотите перехватить событие Unloaded вашего элемента управления и добавить в этот обработчик следующее (для отключения прослушивателя событий):

_myWebService.ForwardMessageCompleted -= OnForwardMessageCompleted;
...