调整窗口大小会导致内存不足datagridcellitemautomationpeer

时间:2017-02-20 14:41:27

标签: c# wpf datagrid ui-automation

我有一个包含Datagrid的WPF窗口。 窗口以全屏方式启动,并填充数据网格。 然后我恢复窗口,然后突然进程开始需要内存,直到它崩溃。 在调整大小之前和之后拍摄内存的快照,我看到越来越多的DataGridCellItemAutomationPeer和DataGridItemAutomationPeer类型的对象需要内存。

用户Gdir指出我已经报告了类似的问题(WPF System.OutOfMemoryException System.Windows.Automation.Peers.AutomationPeer.UpdateSubtree),但似乎情况并非如此。

奇怪的是,它似乎只发生在某些机器上,而我至少有一台机器不会出现问题。

深入挖掘,看起来像方法

protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()
仅在某些计算机上调用

。 触发对该方法的调用的判别式是什么?

指导我解决问题的任何提示?

谢谢!

1 个答案:

答案 0 :(得分:0)

(这只是部分答案)

事实证明,获取DataGrid源代码并删除方法

protected override System.Windows.Automation.Peers.AutomationPeer OnCreateAutomationPeer()

从所有与DataGrid相关的类中,问题就消失了。 怀疑是DataGridAutomationPeer类中的一些错误在某些特定情况下会产生无限循环。

我还不清楚为什么调用OnCreateAutomationPeer以及为什么问题只发生在某些机器上。