为什么事件直到并行线程完成后才触发
本文关键字:线程 事件 并行 为什么 | 更新日期: 2023-09-27 17:52:46
我正在获得项目列表并将它们放在ListView中。这个列表可以很广泛,所以我使用Parallel.ForEach()来处理ListObjects的构造。
在每个项目被实例化之后,我在UI线程上触发一个事件来将项目添加到ListView中。我的日志告诉我,事件正在等待并行任务完成,然后再继续处理AddItem事件。这对我没有帮助。我需要显示尽快更新,但如果它在等待一个事件无论如何为什么并行运行?
我不应该使用事件吗?通过创建一个委托来保存UI回调方法并使用它是否会更好?
是的,Parallel.ForEach()
的目的是改善填充ListView的完成时间。但是你仍然需要等待ListView完全加载后才能显示它。
如果您想要一些可以在填充时查看的内容,您可以尝试 ObservableCollection
。但你应该小心;由此产生的UI活动可能会降低应用程序的性能。
这不是你问题的答案,但我认为这可能是一种改进的方法来获得你想要的结果。
我找到了我要找的东西。它是一个虚拟ListView,也就是VirtualMode中的ListView。看到:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.virtualmode.aspx