c# - ListCollectionView 是否泄漏内存?

标签 c# wpf mvvm memory-leaks listcollectionview

我一直在研究如何避免因 View 模型中对 INotifyCollectionChanged 事件的强引用而导致的内存泄漏。我正在尝试使用 ListCollectionView 看看它是否适合我。我认为以下是内存泄漏,我做错了吗?

var stuff = new ObservableCollection<string>();
while (true)
{
    var result = new ListCollectionView(stuff);
    // Just to keep make sure that the memory I'm seeing 
    // isn't waiting to be GC'd
    GC.Collect(); 
}

最佳答案

ListCollectionView 的文档不是很好,但如果您注意到有一个方法 DetachFromSourceCollection。此调用的备注中提到取消订阅和允许垃圾回收。

    var stuff = new ObservableCollection<string>();
    while (true)
    {
        ListCollectionView result = new ListCollectionView(stuff);

        //Use this method to unsubscribe to events on the underlying collection and allow the CollectionView to be garbage collected.
        result.DetachFromSourceCollection();
        //When finished set to null
        result = null;
        GC.Collect();
    }

关于c# - ListCollectionView 是否泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5749403/

相关文章:

c# - 服务的事件日志抛出错误,指出未设置源

c# - TemplateBinding 不适用于文本框文本

jquery - 在一个使用带有多个 ViewModel 的 knockout.js 的程序中,如何知道一个特定的 View 模型会因属性的变化而改变?

c# - WPF - AvalonDock - 关闭文件

C#:如何将 switch 与 if 语句结合使用?

c# - 基于 Type 变量创建通用对象

c# - C#本身有附加属性吗?

wpf - 正确设置 DataGridCell 样式

wpf - 使 DataTemplate 可混合

WPF:文本编辑器控件,可以通过拖放重新排列段落(如 OneNote)