为什么事件直到并行线程完成后才触发

本文关键字:线程 事件 并行 为什么 | 更新日期: 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