TPLを使い始めたばかりで、Webサービスへの複数の呼び出しを並行して実行したいと思います。私が集めることができるものから、私はこれを行う2つの方法を見ます。
どちらかParallel.ForEach
:
List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
Parallel.ForEach(list, member =>
{
var result = Proxy.Invoke(member);
//...
//Do stuff with the result
//...
});
またはTask<T>
:
List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
ForEach(var member in list)
{
Task<MemberResult>.Factory.StartNew(() => proxy.Invoke(member));
}
//Wait for all tasks to finish.
//Process the result objects.
構文が正しいかどうかを無視して、これらは同等ですか?
それらは同じ結果を生み出しますか?そうでない場合、なぜですか?そしてどちらが好ましいですか?