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.
構文が正しいかどう無視し、equivilantするには、これらは何ですか?
同じ結果が得られますか?そうでない場合、なぜですか?それは好ましいですか?
ありがとうございます。私はParallel.ForEachを使用して終了しました。私たちの生産である16コアマシンでは、応答時間が約25%向上しました。私は、ほとんどの利得がパラレルデータ処理であり、Webサービス自体への並列呼び出しではないと推測しています。 –