【发布时间】:2012-03-31 11:33:45
【问题描述】:
这是我的循环的样子:
var loopResult = Parallel.ForEach(folder.Items.Cast<object>(), (item, loopState) =>
{
if (!loadData)
{
loopState.Stop();
return;
}
DoSomeWork(item);
}
);
if (loopResult.IsCompleted)
{
Debug.WriteLine("done");
}
问题是代码永远不会到达if (loopResult.IsCompleted)。在为所有不同的线程执行return; 之后,绝对没有任何反应。
【问题讨论】:
-
DoSomeWork内部发生了什么? -
这实际上是一个正确的问题,它陷入了试图在 GUI 线程上调用方法调用的方法中,该方法从未返回。
标签: c# .net multithreading parallel-processing