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.Factory.StartNew(delegateが、Task 内で Parallel.For() を停止するのはそれほど簡単ではありません。

ありがとう。

4

0 に答える 0