1

我有一个项目列表,我想浏览每个项目,创建一个任务并启动该任务。但是,我希望它一次完成 10 个任务。

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

这可能吗?

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

4

2 回答 2

1

您可以使用Parallel.For()or Parallel.ForEach(),它们将在多个任务上执行工作。

MaxDegreeOfParallelism当您需要精确控制批次时,您可以使用自定义分区器,但考虑到问题在于 URL,使用更常见的选项可能更有意义。

于 2013-09-08T13:37:54.460 回答
0

Partitioner 有一个很好的算法来创建批次,这也取决于内核的数量。

Parallel.ForEach(Partitioner.Create(from, to), range =>
{
    for (int i = range.Item1; i < range.Item2; i++)
    {
        // ... process i
    }
});
于 2013-09-08T20:04:02.413 回答