批处理任务并行并行运行

时间:2013-09-08 13:31:29

标签: c# .net

我有一个项目列表,我想查看每个项目,创建任务并启动任务。但是,我希望它能同时完成10批任务。

例如,如果我在列表中有100个URL,我希望它将它们分组为10个批次,并循环批量获取每批次迭代10个URL的Web响应。

这可能吗?

我正在使用C#5和.NET 4.5。

2 个答案:

答案 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
    }
});