В какой момент мне нужно избавиться от моего пользовательского элемента управления WPF? - PullRequest
3 голосов
/ 10 марта 2011

Мой вопрос об обработке памяти в WPF.Я создал пользовательский элемент управления с пометкой, но ведьма XAML содержит только стандартные элементы управления WPF.Я не реализовывал никакого кода в коде позади.

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

Нужно ли сам писать метод .Dispose и располагать внутренние элементы управления в моем пользовательском элементе управления?Или это хорошая практика - оставлять эту работу сборщику мусора?Спасибо.

1 Ответ

6 голосов
/ 10 марта 2011

Как правило, в WPF вам не нужно настраивать элементы управления IDisposable. В отличие от Windows Forms, объекты WPF UIElement полностью управляются, а не (обычно) переносят собственные маркеры. Поэтому их не нужно утилизировать, и их можно оставить сборщику мусора.

Вот почему UserControl не реализует IDisposable.

Есть, конечно, исключения. Если ваш класс инкапсулирует что-либо, полученное, например, из HwndHost (например, WebBrowser), вы, вероятно, захотите сделать свой класс IDisposable, чтобы вызвать Dispose() для инкапсулированного элемента управления. Обычно это требуется только в сценариях взаимодействия (например: WebBrowser, который взаимодействует с нативными элементами управления браузера).

...