WPF 数据网格缓存

问题描述 投票:0回答:1

我创建了一个数据网格 并将可观察集合绑定到数据网格 ItemsSource。 清除 Observable 集合时,缓存内存不会被清除。 每次我清除并添加项目时,我的缓存内存总是在增长。 任何人都可以帮我解决这个问题吗?

我尝试使用 GC.Collect 但没有任何反应。 我尝试过取消漏洞页面,但也没有发生任何事情。 我也使用了 EnableRowVirtualization="True" 同样的事情没有改变

wpf memory-leaks datagrid
1个回答
0
投票

在我遇到的讨论该主题的大多数线程中,调用垃圾收集似乎都不受欢迎。经过大量的试验和错误,我发现,当有策略地调用时,它肯定可以使您的应用程序受益。当使用具有多种数据网格实现的应用程序时(例如,一个用于分组的数据网格,一个用于摘要的数据网格,一个用于可编辑项目的数据网格,一个用于搜索结果的数据网格等),当它们超出范围时对其进行初始化非常重要。我所做的是使用新的 List 或 observablecollection 设置 itemssource,并在调用以下内容后立即设置:



        GC.Collect(GC.MaxGeneration,
            GCCollectionMode.Aggressive,
                true, true);


因此,在 Collect 中发生的事情是我们正在获取所有代,Aggressive 正在获取尽可能多的内存,第一个 true 意味着我们正在阻塞(调用 Aggressive 时的唯一选项),最后一个 true 是用于压缩。通过研究 Collect 调用的效果,您应该找到一个令人满意的媒介。

© www.soinside.com 2019 - 2024. All rights reserved.