0

我在列表中创建了 25 个任务。我一次只能触发 10 个线程。

我需要对我的列表做一个 foreach 并使用 TPL 开始前 10 个任务。然后我想等到任何任务完成。如果任何任务完成,那么我需要继续我的 foreach 循环并开始我的第 11 个任务。同样,我需要为列表中的 25 个任务做所有事情。

有什么建议吗?

4

2 回答 2

0

这是一个常见的要求。.NET Framework 不包含内置的完美解决方案。做到这一点的一个好方法是为所有等待SemaphoreSlim. 信号量将强制执行您所需的并发限制。等待它之后,您可以创建并启动您想要运行的实际任务。

使用内置工具可以轻松实现此解决方案,但缺点是您必须一次启动所有 25 个任务。因此,您无法使用此技术处理非常大或无限的工作项流。在你的情况下似乎不是问题。

于 2013-06-22T14:36:41.897 回答
0

看看使用大小为 10 http://msdn.microsoft.com/en-us/library/dd997371.aspx的 BlockingCollection 实现

于 2013-07-09T12:51:17.453 回答