WPF数据网格缓存

soat7uwm  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(110)

我已经创建了一个datagrid并绑定了一个Observable Collection到datagrid ItemsSource。清除可观察集合时,未清除缓存。每次我清除和添加项目时,我的缓存记忆体总是在增长。谁能帮我解决这个问题?
我试过用GC.Collect,但没有任何React。我已经尝试无效的洞页,也没有发生任何事情。我也使用了EnableRowVirtualization=“True”,同样的东西没有改变

uidvcgyl

uidvcgyl1#

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

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

字符串
所以在Collect中发生的是我们正在获取所有代,Aggressive正在获取尽可能多的内存,第一个true意味着我们正在阻塞(调用Aggressive时的唯一选项),最后一个true是为了压缩。通过研究你的电话收集的影响,你应该找到一个快乐的媒介。

相关问题