【发布时间】:2011-05-11 12:27:28
【问题描述】:
我正在使用 .NET 4 框架中的 WPF DataGrid 组件,它绑定到我在这里找到的线程安全可观察集合:http://www.deanchalk.me.uk/post/Thread-Safe-Dispatcher-Safe-Observable-Collection-for-WPF.aspx
该程序是一个系统管理工具,它对某个范围内的每个 IP 地址进行 ping 操作,如果有响应,它会在集合中创建一个对象,其中包含来自计算机的一些详细信息。
我遇到的问题是性能不佳。最初,我只是更新集合并让数据网格获取更改。这导致了一个问题,即除非我滚动,否则 DataGrid 控件不会刷新和显示数据。
所以我添加了一个计时器来调用网格刷新方法,计时器每 750 毫秒计时一次。这非常有效,直到我意识到程序 UI 在启用计时器并且正在扫描时完全没有响应。
没有计时器,性能是可以接受的,没有它,它很糟糕。我已经尝试了几个超时时间的值(最多 2000 毫秒),但没有任何运气,并且还确保我的列是固定宽度(我读到自动生成的列和宽度会导致性能问题)。
网格中的行数约为 300 - 400 5 列,因此它并不是一个巨大的网格。
在不牺牲性能的情况下,是否有人对我如何让网格在添加后面的集合时及时更新有任何建议?
【问题讨论】:
标签: c# wpf performance data-binding datagrid