我有一个简单的代码可以做到这一点:
private List<DicomImage> img = new List<DicomImage>();
Parallel.ForEach(ofdmulti.FileNames, filename =>
{
img.Add(new DicomImage(filename));
Progress_Bar_Loading_Images.PerformStep();
}
);
当我执行它时,我收到一个错误:
“跨线程操作无效:从a访问控制'Progress_Bar_Loading_Images' 线程以外的线程。“
如何在不删除进度条的情况下解决这个问题?我真的需要它来展示进展
答案 0 :(得分:0)
当您使用Parallel.Foreach时,每个迭代(或其中的一组)同时在另一个线程(幸运地在不同的处理器上)执行。但是,进度条正在处理主线程(或GUI线程),因此您需要在每次调用进度条后同步线程。 在这里要提到的一件重要的事情是,每个步骤的同步都是缓慢且无意义的。所以我建议你根据索引的模数设置一个条件来说“为每10个步骤同步”。