なぜ私はこれを行うことができます...
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() を停止するのはそれほど簡単ではありません。
ありがとう。