Я это просто для:Parallel Для и фона рабочего
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 Для но не может использовать ProgressBar .. поэтому я думал об использовании BackgroundWorker, но проблема в том, что операция сразу после for зависит от нагрузки объекта img, которая происходит в этом так, пока это не будет выполнено. Я не могу продолжить. Мое понимание BackGroundWorker заключается в том, что он выполняется в фоновом режиме, в то время как основная программа продолжает выполнение, поэтому такой подход приведет к ошибкам при попытке получить доступ к объекту img, который не был создан к тому времени, когда основная программа достигает кода вне ,
Стоит ли использовать Фоновый Работник в этом случае, чтобы ускорить загрузку объекта img? если это так, как я могу подождать, пока работник фона выполнит свою работу, а затем продолжит выполнение основной программы? Мне нужно сообщить о прогрессе в работе для пользователя, поэтому использование параллели без чего-то, что позволит мне сообщить об этом пользователю, не будет работать. Спасибо, Матиас.
Одна вещь о Фоновом Работнике заключается в том, что его задача состоит в выполнении длительной вычислительной работы в фоновом режиме, в то время как обновление пользовательского интерфейса можно обрабатывать через основной поток. И вы можете обрабатывать такие события, как DoWork, ProgressChanged - для отчета о состоянии, которое может быть использовано для обновления Progressbar в вашем случае. –
Спасибо, Остин, это отлично работает для меня, проблема связана с кодом, который продолжает выполняться в основном потоке , он использует объект, который загружается в for (который был бы внутри рабочего фона, если я решил реализовать это), поэтому пока он не завершится, я не могу сделать много иначе, иначе он будет вызывать ошибки, пытающиеся получить доступ объекты, которые еще не загружены – Matias