当前任务完成后继续执行任务

时间:2013-06-22 03:07:44

标签: .net task-parallel-library

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

我需要对我的列表进行操作并使用TPL启动前10个任务。然后我想等到任何任务完成。如果任何任务完成,那么我需要继续我的foreach循环并开始我的第11个任务。同样地,我需要在列表中完成所有25个任务。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

的BlockingCollection实现