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