私は10種類の並列スレッドで実行する1つの方法を持っていますが、すべて互いに独立しています。私は処理するアイテムが100アイテムあり、一度に10を処理したいのですが、一度に10をどのように実行するのですか?私はParallel.ForEach
を使用しているサンプルコードを作成しましたが、何を設定する必要があるので、一度に10個のスレッドを実行し、実行中のタスクが完了したら自動的に新しいスレッドを作成する必要があると仮定します。すべての項目が完了していない限り、ビジー状態になります。C#.net 4.0を使用して最大定義済み並列スレッドでタスクを実行する方法
private void StartAccuracyCalculator()
{
List<MaterialComposition> lstMaterialComposition = DataHelper.GetMaterialComposition();
Parallel.ForEach(lstMaterialComposition, composition =>
{
try
{
CalculateAccuracy(composition);
}
catch (Exception ex)
{
//LogException(ex)
}
});
}
private void CalculateAccuracy(MaterialComposition composition)
{
/// actual process to perform
}
は、私は一度に10項目を実行したいと10のいずれかがlstMaterialComposition
から次の項目を開始する必要がありますので、完成したParallel.ForEach
におけるのでlstMaterialComposition
は、DBから100個のレコードを取得したとします。
Parallel.ForEach
でも可能ですか他にもありますか?
おかげアディルは、新しいParallelOptions {MaxDegreeOfParallelism = 10}を設定する芳香族、次のタスクを取るのだろうか? –
はい@Neeraj Kumar Gupta。 – Adil