Parallel.ForEach和ParallelEnumerable.ForAll之间的区别

时间:2013-06-06 23:54:38

标签: c# .net linq c#-4.0 plinq

我有一个Model类的集合,我不想将每个类分别映射到View Model类。

我可以使用Parallel.ForEachParallelEnumerable.ForAll,那么2之间有什么区别?如果有的话?

我在MSDN上找不到任何内容。

1 个答案:

答案 0 :(得分:5)

  

我可以使用Parallel.ForEach或ParallelEnumerable.ForAll,那么2之间有什么区别?如果有的话?

Parallel.ForEach是在普通代码中使用foreach的等价物。

ParallelEnumerable.ForAll方法实际上与List<T>.ForEach等效。

虽然ForAll方法要求您已经使用PLINQ,但两者的执行和工作方式类似,因为您需要ParallelEnumerableParallel.ForEach可以直接使用任何IEnumerable<T>

一般来说,我倾向于选择Parallel.ForEach,因为ForAll的唯一目的是引起副作用。这有一些缺点,如described in detail by Eric Lippert