我正在尝试使用多线程来更快地处理结果列表。我尝试为每个使用并行,但是当运行过程方法时,我没有收到正确的结果。
private IEnumerable<BulkProcessorResult> GetProccessResults(List<Foo> Foos)
{
var listOfFooLists = CreateListOfFooLists(Foos);
var bulkProcessorResults = new List<BulkProcessorResult>();
Parallel.ForEach(listOfFooLists, FooList =>
{
foreach (var Foo in FooList)
{
var processClaimResult = _processor.Process(Foo);
var bulkProcessorResult = new BulkProcessorResult()
{
ClaimStatusId = (int) processClaimResult.ClaimStatusEnum,
Property1 = Foo.Property1
};
bulkProcessorResults.Add(bulkProcessorResult);
}
});
return bulkProcessorResults;
}
如果我使用普通的 forEach,我会得到正确的输出。如果我使用上面的代码,当应该有三个状态为 1 和一个状态为 3 时,我会得到所有 2 的状态。
我对线程真的很陌生,所以任何帮助都会很棒。