【发布时间】:2015-12-16 23:28:20
【问题描述】:
我有一个大列表(1000 或更多),我正在使用 Parallel.Foreach 循环它,但我得到了这个异常:
System.Threading.Tasks.Task.ThrowIfExceptional(布尔 includeTaskCanceledExceptions) 在
System.Threading.Tasks.Task.Wait(Int32 毫秒超时, CancellationToken cancelToken) 在
System.Threading.Tasks.Task.Wait()
请告诉我为什么会出现此异常并给我解决方案,以及如何提高并行foreach 的性能?
var results = new List<BO>();
var localLockObject = new object();
Parallel.ForEach(
emails,
() => new List<BO>(), (email, state, localList) =>
{
var item = new BO();
localList.Add(item.Validate(email));
return localList;
},
finalResult => { lock (localLockObject) results.AddRange(finalResult); }
);
【问题讨论】:
-
你确定这是抛出异常的地方吗?您可以单击“Copy Exception Details to clipboard”并将全文发布为对您问题的编辑吗?这也将让我们看到任何内部异常或与之相关的消息。
标签: c# multithreading foreach parallel-processing