nik*_*nik 0 c# multithreading plinq concurrentdictionary
如果你有这个:
var resultlist = new List<Dictionary<DateTime, double>>();
Parallel.ForEach(input, item =>
{
resultlist.Add(SomeDataDictionary(item));
});
Run Code Online (Sandbox Code Playgroud)
返回数据将按方法SomeDataDictionary返回数据的顺序排列,不会按输入顺序排列.
有没有办法保持输入的顺序?
或者是更改数据类型并使用Parallel.For循环然后将索引传递给某种类型的数组返回类型的唯一方法?
List<T>是不是线程安全的,这就是为什么resultlist.Add是不正确的上下文.我建议改用PLinq:
var reultslist = input
.AsParallel()
// .AsOrdered() // uncomment this if you want to preserve input order
.Select(item => SomeDataDictionary(item))
.ToList();
Run Code Online (Sandbox Code Playgroud)