Parallel.ForEach
はすべてのスレッドが戻るまでブロックしています。下の各objectTypeは実際にはリストです。このシナリオでParallel.ForEach
を1回だけ使用する方法はありますか?お知らせ下さい。複数のParallel.ForEachをC#で1つにまとめる
Main(){
List<Type1> objectType1 = ...
List<Type2> objectType2 = ...
List<Type3> objectType3 = ...
Parallel.ForEach(objectType1, MyFunction)
Parallel.ForEach(objectType2, MyFunction)
Parallel.ForEach(objectType3, MyFunction)
}
EDIT: これは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
}
それぞれの場合、「MyFunction」はすべて同じ機能ですか? –
MyFunctionの型はなぜですか?それらがすべて同じタイプで動作する場合は、リストを単一のリストにまとめ、各アイテムに対してParallel.ForEachを呼び出します。 –
小さなヒント: 'is'の代わりに' as'を使うと、 'var t1 = arg 'をType1とすることもできます。 if(arg!= null)ProcessType1(t1); ' –