Parallel.ForEach を制限するにはどうすればよいですか? 質問する

Parallel.ForEach を制限するにはどうすればよいですか? 質問する

いくつかの Web ページをダウンロードする Parallel.ForEach() 非同期ループがあります。帯域幅が制限されているため、一度に x ページしかダウンロードできませんが、Parallel.ForEach は必要な Web ページのリスト全体を実行します。

Parallel.ForEach の実行中にスレッド数やその他の制限を制限する方法はありますか?

デモコード:

Parallel.ForEach(listOfWebpages, webpage => {
  Download(webpage);
});

実際のタスクは Web ページとは何の関係もないので、創造的な Web クロール ソリューションは役に立ちません。

ベストアンサー1

MaxDegreeOfParallelismパラメータで を指定できますParallelOptions:

Parallel.ForEach(
    listOfWebpages,
    new ParallelOptions { MaxDegreeOfParallelism = 4 },
    webpage => { Download(webpage); }
);

マイクロソフトDN:並列.ForEach

マイクロソフトDN:並列オプション.最大並列度

おすすめ記事