如何减少UI线程上的TreeView填充时间?

时间:2014-03-04 19:54:01

标签: c# winforms treeview

我正在创建一个媒体统计应用程序,它有一个TreeView控件,所有媒体文件都作为项目。填充它需要几秒钟,我认为必须有另一种方式在任何滚动条位置显示项目而不花费那么多时间。

禁止从其创建的线程(UI线程)以外的线程访问控件,因此它是通常的方法,具有明显的冻结,或者其他一些我无法想出的方法。

如何在不拖延UI线程很长时间的情况下使用多个项目填充TreeView控件?

2 个答案:

答案 0 :(得分:1)

不要一次加载所有项目。只加载他们在任何给定时间点看到的内容(所以首先只有顶级),然后当任何给定项目展开时(有一个相关事件供你添加处理程序),动态填充下一级。当展开下一级别的项目时,向下展开一级等等。

答案 1 :(得分:-1)

从另一个优先级较低的线程使用您的UI线程的Dispatcher。

或者你可以用不同的方式实现它。显示链接到项目的VM,这些VM仍在后台加载,并在项目加载完成后更新VM。

或者一次只加载X金额,物品页面。