首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示大型ListView添加的进度

显示大型ListView添加的进度
EN

Stack Overflow用户
提问于 2010-01-01 02:47:07
回答 2查看 318关注 0票数 0

简史。我有一个小报告工具,我正在创建它使用一个backgroundWorker来做报告。运行良好,GUI更新得很好,并报告我想要它的内容。

然而,如果我得到了很多返回的结果,然后尝试更新我的ListView控件,那么在添加所有的ListViewItems时图形用户界面就挂起了。在此期间,我想向用户提供一些反馈,让他们知道应用程序仍在运行,但似乎无法弄清楚。

我试图从BackgroundWorker中更新ListView,当然得到了跨线程错误。

我尝试从BackgroundWorker.DoWork中创建一个新的ListView,直到我尝试将ListView添加到BackgroundWorker.RunWorkerCompleted中的图形用户界面,并收到跨线程错误。

我试图从BackgroundWorker.RunWorkerCompleted更新ListView,这就是图形用户界面挂起的地方(实际上变成了白色),我甚至创建了一个进度窗口,它也做同样的事情。一旦完成了ListViewItems的添加,应用程序就会恢复正常并正常工作。

有谁有什么想法吗?

谢谢帕特里克

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-01 02:50:51

您应该在RunWorkerCompleted的UI线程上将项添加到ListView。

您应该在添加项之前调用ListView的BeginUpdate方法,然后再调用EndUpdate。这应该会让它变得更快。

为了更快,您应该创建一个ListViewItems数组,然后使用整个数组调用AddRange

如果这样做,就不需要调用BeginUpdate或EndUpdate,因为AddRange会为您调用它们。

票数 0
EN

Stack Overflow用户

发布于 2010-01-01 02:55:28

不是在RunWorkerCompleted中一次添加所有项,而是在ProgressChanged事件处理程序中以10或20为一批添加它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1986610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档