Предотвращение утечек памяти с прикрепленным поведением - PullRequest
11 голосов
/ 18 августа 2008

Я создал «прикрепленное поведение» в своем приложении WPF, которое позволяет мне обрабатывать нажатие клавиши Enter и переходить к следующему элементу управления. Я называю это EnterKeyTraversal.IsEnabled, и вы можете увидеть код в моем блоге здесь .

Моя главная проблема сейчас заключается в том, что у меня может быть утечка памяти, так как я обрабатываю событие PreviewKeyDown в UIElements и никогда явно не "отцепляю" событие.

Как лучше всего предотвратить эту утечку (если она действительно есть)? Должен ли я сохранить список элементов, которыми я управляю, и отцепить событие PreviewKeyDown в событии Application.Exit? Кто-нибудь имел успех с присоединенным поведением в своих собственных приложениях WPF и придумал элегантное решение для управления памятью?

Ответы [ 11 ]

0 голосов
/ 18 августа 2008

Убедитесь, что элементы ссылок на события находятся в объекте, на который они ссылаются, как текстовые поля в элементе управления формы. Или, если это не может быть предотвращено. Создайте статическое событие в глобальном вспомогательном классе, а затем отслеживайте события в глобальном вспомогательном классе. Если эти два шага не могут быть выполнены, попробуйте использовать WeakReference, они обычно идеально подходят для этих ситуаций, но они идут с накладными расходами.

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