我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间有什么区别,如果有的话?
Parallel.ForEach是foreach在普通代码中使用的等价物.
该ParallelEnumerable.ForAll方法实际上是等效的List<T>.ForEach.
两者都将执行和工作类似,虽然该ForAll方法要求您已经使用PLINQ,因为您需要一个ParallelEnumerable. Parallel.ForEach任何直接工作IEnumerable<T>.
一般来说,我倾向于选择Parallel.ForEach,因为唯一的目的ForAll是引起副作用.这有一些缺点,正如Eric Lippert详细描述的那样.