Use*_*987 3 c# asp.net asp.net-mvc multithreading thread-safety
我有一个项目列表,通过它我可以使用PLINQ语句循环增加特定用户的总收入,如下所示:
double TotalEarnings = 0.0d;
_SortedList.AsParallel().WithDegreeOfParallelism(5).ForAll(item => {
TotalEarnings += Convert.ToDouble(item.SaleEarning);
});
Run Code Online (Sandbox Code Playgroud)
通过这样使用它,我总是得到一个不同的价值.我相信这是因为声明的变量不是线程安全的.我怎样才能解决这个问题?
PS _SortedList是一个通用集合(List <>)...
用于Sum使用PLINQ获得总数.它将有效和安全地汇总总和.
double TotalEarnings = _SortedList.AsParallel()
.WithDegreeOfParallelism(5)
.Sum(item => item.SaleEarning);
Run Code Online (Sandbox Code Playgroud)