是否有一个着名的,经过良好测试的nuget包,它将为我提供类似Parallel ForEach的功能,但是我可以限制同时运行的并发任务量?
我知道我可以自己写一个,所以不要求代码样本 - 只是询问是否有一个流行的 nuget包可以为我做。
谢谢!
答案 0 :(得分:5)
这样的东西让你可以控制并行度:
var items = Enumerable.Range(0, 50);
var parallelOptions = new ParallelOptions() { MaxDegreeOfParallelism = 3 };
Parallel.ForEach(items, parallelOptions,
i =>
{
Task.Delay(1000).GetAwaiter().GetResult(); // It's just an example
Console.WriteLine($"{DateTime.Now.ToLongTimeString()} I'm {i}");
});
如果您将MaxDegreeOfParallelism
置于1,您将看到每个项目都是按顺序处理的。
来自MSDN:MaxDegreeOfParallelism
获取或设置此ParallelOptions实例启用的最大并发任务数。