Удаление обработчиков событий в окне wpf - PullRequest
2 голосов
/ 09 февраля 2010

В нашем приложении wpf мы добавляем события в конструктор нашего окна следующим образом:

AddHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent);

        this.Closing += new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded += new RoutedEventHandler(WindowF_Loaded);

Это хорошая идея, чтобы удалить эти события в закрывающем событии, чтобы окно было расположено:

RemoveHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent);

        this.Closing -= new System.ComponentModel.CancelEventHandler(WindowF_Closing);
        this.Loaded -= new RoutedEventHandler(WindowF_Loaded);

1 Ответ

6 голосов
/ 09 февраля 2010

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

В вашем случае издателем событий Closing и Loaded является само окно, поэтому нет необходимости отписываться от этого события. Клавиатура, однако, будет долгое время, поэтому отписаться от KeyUpEvent - хорошая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...