我有一个方法,想要在10个不同的并行线程中运行,所有线程都是独立的,彼此之间没有依赖关系。我的问题是,如果我有100个要处理的项目,并且想一次性处理10个,那么如何才能一次运行10个呢? 我创建了一个示例代码,其中使用了Parallel.ForEach
,但我需要设置什么才能使其每次运行10个线程,并且当某个正在运行的任务已完成时,它应该自动开始新任务,因此除非所有项目都已完成,否则所有10个线程都应该保持繁忙状态。
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
从数据库中获取了100条记录,因此在 Parallel.ForEach
中,我希望每次只运行10个项目,并且任何10个项目完成后,下一个项目从 lstMaterialComposition
开始。
请建议是否可以通过 Parallel.ForEach
实现,或者是否有其他选项可供选择?