【问题标题】:Resources to read about Databinding causing memory leaks in WPF?阅读有关导致 WPF 中的内存泄漏的数据绑定的资源?
【发布时间】:2011-01-26 02:39:40
【问题描述】:

每次替换 TreeView 的 ItemsSource 时,我的 wpf 应用程序都会占用内存(我只是构造一个新对象并将其分配给绑定属性)。此外,仅当我使用其他 ItemControls 中使用的 DataTemplate 时才会发生内存囤积。当我删除 DataTemplate 时,Treeview 恢复为显示绑定对象的 ToString() 方法,但内存丢失停止。

谁能帮我解决这个问题?互联网上有没有关于这个主题的资源?

我找到了一个further link,其中包含有关 WPF 内存泄漏的有用信息。

【问题讨论】:

    标签: .net wpf data-binding memory-leaks


    【解决方案1】:

    【讨论】:

    • 非常感谢!但没有一篇文章适用于这种情况。我会看看我是否可以在一段孤立的代码中重现问题,然后发布。
    【解决方案2】:

    有相当多的绑定场景会导致 WPF 中的内存泄漏:

    1) 绑定到既不是DependencyProperty 或以除OneTime 以外的任何其他绑定模式实现INotifyPropertyChanged 的对象上的属性可能会导致内存泄漏,因为第一个对象将保留在内存中以用于属性参考目的。

    2) TreeView 存在一个错误,它无限期地保留对第一个选定项目的引用。这是由于 CreateUntargetedBindingExpression 方法中的错误,该方法维护对所选第一个项目的引用,即使它是非目标绑定表达式。可以通过一些反射来解决此错误,以使用空绑定项预编译绑定表达式。

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 1970-01-01
      • 2011-08-17
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多