我有一个项目列表,我想查看每个项目,创建任务并启动任务。但是,我希望它能同时完成10批任务。
例如,如果我在列表中有100个URL,我希望它将它们分组为10个批次,并循环批量获取每批次迭代10个URL的Web响应。
这可能吗?
我正在使用C#5和.NET 4.5。
答案 0 :(得分:1)
您可以使用Parallel.For()
或Parallel.ForEach()
,他们将执行许多任务的工作。
当您需要对批次进行精确控制时,您可以使用自定义分区程序,但鉴于问题与URL有关,使用更常见的MaxDegreeOfParallelism
选项可能会更有意义。
答案 1 :(得分:0)
分区程序有一个很好的算法,可以根据核心数创建批次。
Parallel.ForEach(Partitioner.Create(from, to), range =>
{
for (int i = range.Item1; i < range.Item2; i++)
{
// ... process i
}
});