Asp.net mvc 4 平行Foreach竞争条件
我遇到一个问题,并行foreach在连接完成执行之前关闭连接。当我有一个常规的foreach循环运行时,它很慢,但它会返回所有的东西。一旦我改为并行foreach,它现在返回大约95%的数据并终止 以下是我正在使用的代码:Asp.net mvc 4 平行Foreach竞争条件,asp.net-mvc-4,parallel-processing,race-condition,parallel.foreach,Asp.net Mvc 4,Parallel Processing,Race Condition,Parallel.foreach,我遇到一个问题,并行foreach在连接完成执行之前关闭连接。当我有一个常规的foreach循环运行时,它很慢,但它会返回所有的东西。一旦我改为并行foreach,它现在返回大约95%的数据并终止 以下是我正在使用的代码: var USPostalCodes = repository.GetUSPostalCodes(); var CAPostalCodes = repository.GetCAPostalCodes(); Par
var USPostalCodes = repository.GetUSPostalCodes();
var CAPostalCodes = repository.GetCAPostalCodes();
Parallel.ForEach(spreadsheetinfo, location =>
{
LocationData Locationdata = new LocationData()
{
id = location.Id,
Market = repository.GetMarketsForPostalCode(location.PostalCode, uploadedFile, USPostalCodes, CAPostalCodes),
};
locationlist.Add(Locationdata);
});
I added the following code to check and see what was going on, and that fixed it so that it is returning all rows so i know that a race condition exists but what i can't figure out is why and how ot fix it. any suggestions would be greatly appreciated
Console.WriteLine("Processing {0} on thread {1}", Locationdata,
Thread.CurrentThread.ManagedThreadId);
locationlist
可能不是线程安全的。
因此,您正在破坏列表
相反,您应该使用.AsParrelel.Select()
并行运行代理,并返回一个带有结果的IEnumerable