我的问题是组合PLINQ和yield关键字的结果。如果我这样写,会发生什么:
//Some stuff here
foreach (var x in collection.AsParallel())
{
yield return new CustomObject
{
property1 = //Large calculations here
property2 = x.Name
//... etc.
};
}
我真正想要的是什么?我想在不同的线程中初始化对象,但是当它们中的一些需要时返回它们 提前谢谢!
答案 0 :(得分:3)
AsParallel
只允许使用LINQ操作的并行版本。它实际上并不是做其中任何东西。
因此,除了一小部分额外开销之外,您的代码在功能上与完全省略AsParallel
没有区别。
如果你想真正能够并行执行CustomObject
个实例的构建,并且你想使用PLINQ来做(当然,你可以使用任意数量的其他工具来创建对象并行),那么你将需要使用Select
将一种类型的序列转换为另一种类型的序列,而不是使用自己的自定义迭代器块。