Ресурсы, чтобы прочитать о привязке данных, вызывающей утечки памяти в WPF? - PullRequest
3 голосов
/ 11 марта 2010

Мое приложение wpf потребляет память каждый раз, когда заменяется ItemsSource TreeView (я просто создаю новый объект и присваиваю его связанному свойству). Кроме того, накопление памяти происходит только тогда, когда я использую DataTemplate, который также используется в других ItemControls. Когда я удаляю DataTemplate, Treeview возвращается к отображению метода ToString () связанных объектов, но потеря памяти прекращается.

Может кто-нибудь помочь мне о том, как решить эту проблему? Есть ли в интернете ресурсы на эту тему?

Я нашел дополнительную ссылку с полезной информацией об утечках памяти WPF.

Ответы [ 2 ]

3 голосов
/ 11 марта 2010

Существует несколько сценариев привязки, которые могут вызвать утечку памяти в WPF:

1) Привязка к свойству объекта, который не является DependencyProperty или реализует INotifyPropertyChanged в любом другом режиме связывания, кроме OneTime, может привести к утечке памяти, поскольку первый объект будет сохранен в памяти для свойства справочные цели.

2) Существует ошибка с TreeView, которая бесконечно сохраняет ссылку на первый выбранный элемент. Это связано с ошибкой в ​​методе CreateUntargetedBindingExpression, которая поддерживает ссылку на первый выбранный элемент, даже если это нецелевое выражение привязки. Эту ошибку можно обойти, немного подумав, чтобы предварительно скомпилировать выражение привязки с нулевым элементом привязки.

3 голосов
/ 11 марта 2010

Есть несколько сценариев, которые могут вызвать утечки памяти в WPF. Вот некоторые ссылки, которые могут помочь:

http://blogs.msdn.com/jgoldb/archive/2008/02/04/finding-memory-leaks-in-wpf-based-applications.aspx

http://blogs.msdn.com/micmcd/archive/2008/03/07/avoiding-a-wpf-memory-leak-with-databinding-black-magic.aspx

http://support.microsoft.com/kb/938416/en-us

...