并行和进度条

时间:2014-06-25 23:13:30

标签: c# parallel-processing progress-bar

我有这段代码:

        Parallel.For(0, img.Count(), i =>
        {
            img[i].Scale = escala_axial;
            Bitmap tmp_b = new Bitmap((System.Drawing.Image)img[i].RenderImage(0));
            tmp_b = filtro.Apply(tmp_b);
            imagenes[i] = tmp_b;
            Progress_Bar_Loading_Images.Invoke((MethodInvoker)(delegate() { Progress_Bar_Loading_Images.Value++; }));
        });

没有ProgressBar调用的东西它工作正常。现在,当我使用Invoke时,它看起来好像永远不会结束循环并且屏幕冻结。任何想法可能是什么问题?

谢谢!

编辑:

以下是答案:感谢您的反馈!

        Parallel.For(0, img.Count(), i =>
        {
            img[i].Scale = escala_axial;
            Bitmap tmp_b = new Bitmap((System.Drawing.Image)img[i].RenderImage(0));
            tmp_b = filtro.Apply(tmp_b);
            imagenes[i] = tmp_b;
            this.Invoke(new Action(() => Progress_Bar_Loading_Images.Value++));
        });

1 个答案:

答案 0 :(得分:1)

而不是progressbar.Invoke()使用此:

//rest of loop....
this.Invoke(/*your code here*/);