0

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

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 = Task.Factory.StartNew(delegate但在 Task 中停止 Parallel.For() 并不是那么容易。

谢谢。

4

0 回答 0