我有这个简单的:
for (int i = 0; i < nro_archivos; ++i) //Cargar el objeto img
{
string nombrearchivo = archivosdicom[i].FullName;
img.Add(new ImagenDicom(nombrearchivo));
Progress_Bar_Loading_Images.PerformStep();
}
其次是:
decimal[] sliceseparation_imagen = new decimal[img.Count - 1];
for (int i = 0; i < img.Count; i++)
{
if (i < img.Count - 1)
{
sliceseparation_imagen[i] = Math.Abs(img[i + 1].Z - img[i].Z);
}
}
sliceseparation_promedio = sliceseparation_imagen.Average();
现在,我的挑战是:我实现了 Paralell For 但不能使用进度条..所以我正在考虑使用 BackgroundWorker 但问题是 for 之后的操作取决于对象 img 的负载,发生在因此,在没有完成之前,我无法继续。我对BackGroundWorker的理解是,它在后台执行,而主程序继续执行,所以这种方式在尝试访问到主程序到达for之外的代码时还没有创建的img对象时会带来错误。
在这种情况下是否值得使用 Background Worker 来加速 img 对象的加载?如果是这样,我如何等到后台工作人员完成其工作后再继续执行主程序?我需要向用户报告 for 操作的进度,因此在没有允许我向用户报告的情况下使用并行 for 是行不通的。谢谢,马蒂亚斯。