我有这段代码:
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++));
});
答案 0 :(得分:1)
而不是progressbar.Invoke()使用此:
//rest of loop....
this.Invoke(/*your code here*/);