繁体   English   中英

如何加速一个ListView的处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM