为什么我可以这样做......
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()并不容易。
感谢。