Parallel.ForEach
阻塞直到所有线程返回。下面的每个 objectType 实际上是一个列表。在这种情况下,有什么方法可以只使用一次 Parallel.ForEach
吗?请指教。
Main(){
List<Type1> objectType1 = ...
List<Type2> objectType2 = ...
List<Type3> objectType3 = ...
Parallel.ForEach(objectType1, MyFunction)
Parallel.ForEach(objectType2, MyFunction)
Parallel.ForEach(objectType3, MyFunction)
}
编辑:
这是我的函数:
MyFunction (object arg) {
//some code here
if (arg is Type1) { ProcessType1(arg as Type1); }
else if (arg is Type2) { ProcessType2(arg as Type2); }
else if (arg is Type3) { ProcessType3(arg as Type3); }
//some more code here
}
最佳答案
对于您上面编写的伪代码,Type1
、Type2
和 Type3
都必须可转换为通用类型, MyFunction
方法的参数类型。如果它们都有一个共同的基本类型,并且您实际上是在为它们调用 MyFunction
,那么您可以使用 LINQ 组合这些序列:
Parallel.ForEach(objectType1.Concat<BaseType>(objectType2).Concat(objectType3),
MyFunction);
和MyFunction
看起来像:
public void MyFunction(BaseType baseType)
{
// Process base type...
}
关于c# - 在 C# 中将多个 Parallel.ForEach 合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500466/