[英]How to speed up the disposal of a ListView
如何加快 ListView 控件的处理?
一点背景:这个解决方案使用的是 MaterialSkin,所以我的可用控件列表是有限的(例如,没有 ListBox 或 DataGridView)。 其次,该列表包含大量不合理的项目(平均为 51k,一列或两列,具体取决于设置),所以我不期望闪电般的速度,但也不是我所看到的。
当表单关闭时,我不需要列表中的任何内容。 它达到了目的,可以离开了。 这是我尝试过的:
Close(); --- 16 seconds (just closing the form)
MyListView.Dispose(); --- 16 seconds
MyListView.Items.Clear(); --- 16 seconds
MyListView.Clear(); --- 17 seconds
MyListView.BeginUpdate();
MyListView.Items.Clear(); --- 16 seconds
实际上,我尝试过的每个选项都需要大约 16 秒才能摆脱列表。 现在,填充列表大约需要 16 秒,我也在研究这一点——但至少在那里时间有点合理,因为我用太多记录使这个糟糕的列表过载。 在那里,我知道 ListView 必须处理放置项目的开销。 在移除方面,没有那么多。
注意:表单正在与 ShowDialog 一起显示——因此在 16 秒结束之前不会返回控件。 后备计划是使用 Show 并在对话框关闭过程中触发事件。
是的,我认为显示 51k 记录是糟糕的 UI,并且已经多次向客户端解释了这一点; 现在,坚持 51k 记录存在。 (我确实添加了全文搜索,否则...)
隐藏你的列表视图怎么样? 尝试将它的可见属性设置为 false,当您不再需要列表视图时尝试关闭表单而不清除您的列表视图
您是否尝试过使用数据绑定而不是直接使用 Listview.Items? 因此,您可以将 ItemsSource 设置为 null,然后(异步?)清空实际列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.