for和Parallel.For()进度更新

时间:2012-05-29 15:31:46

标签: .net task-parallel-library

为什么我可以这样做......

for(int i = 0; i < 100; i++)
{
   // do work here

   ProgressBar.Value = i;
}

......但我不能这样做?

object theLock = new object();

Parallel.For(0, 100, delegate(int i)
{
   // do work here

   lock(theLock)
   {
      Invoke((Action) delegate
         {
            ProgressBar.Value = i;
         });
   }
});

使用BeginInvoke()进度条更新延迟到Parallel.For()循环结束。这就是我尝试使用Invoke()的原因。

我已经考虑过在Task task = Task.Factory.StartNew(delegate中填充所有内容,但在Task中停止Parallel.For()并不容易。

感谢。

0 个答案:

没有答案