並行線程我有1點的方法,我想在10個不同的並行線程運行在最大任務,都將是獨立存在於彼此之間沒有相關性,我的問題是,如果我有100個項目來處理,並想在一次處理10那麼如何在運行10做一次。我創建了那裏我使用Parallel.ForEach
但一個示例代碼我需要做什麼來設置,所以應該在同時運行10個線程,並假設任何正在運行的任務已經完成了,那麼它應該自動採取新的,所以所有的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
}
假設lstMaterialComposition
得到DB 100個記錄,以便在Parallel.ForEach
我想運行在同一時間只有10項和任何10已經完成了所以從lstMaterialComposition
下一個項目應該開始。
請建議是否有可能雖然Parallel.ForEach
或者是有其他的選擇辦呢?
感謝阿迪爾,創下新ParallelOptions {MaxDegreeOfParallelism = 10}將芳香採取下一步的任務,如果任何正在運行的任務已經完成? –
是@Neeraj庫馬爾古普塔。 – Adil