我得到一个项目列表并将它们放在ListView中。这个列表可以很广泛,所以我使用Parallel.ForEach()来处理ListObjects的构造。
在每个项目实例化后,我在UI线程上触发一个事件,将项目添加到ListView。我的日志记录向我指示事件正在等待,直到并行任务完成,然后才继续使用AddItem事件。这对我没有帮助。我需要显示器尽快更新,但如果它正在等待事件,为什么要并行运行?
我不应该为此使用事件吗?通过创建一个委托来保存UI回调方法并使用它来改善吗?
答案 0 :(得分:0)
是的,Parallel.ForEach()
的目的是改善填充ListView的完成时间。但是你仍然必须等待ListView完全加载才能显示它。
如果您想要在填充时可以查看的内容,可以尝试ObservableCollection
。但你应该谨慎;生成的UI活动可能会降低应用程序的性能。
答案 1 :(得分:0)
这不是您问题的答案,但我认为这可能是获得您想要的结果的改进方法。
我发现了我正在寻找的东西。它是一个Virtual ListView,也就是VirtualMode中的ListView。
见这里:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.virtualmode.aspx