2013-06-22 95 views
0

我在列表中创建了25个任务。我只能在时间点击10个线程。当前任务完成时继续执行任务

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

有什么建议吗?

+0

大小你能否更详细地解释你在做什么,为什么?为什么不能使用'Parallel.ForEach()'而不是'Task's? – svick

+0

或TPL数据流。我发现数据流通常是一种很好的方法,只要OP有关于节流的问题(通常表示管线/网格场景)。 –

回答

0

这是一个常见的要求。 .NET Framework不包含内置的完美解决方案。一个好办法是为所有那些等待SemaphoreSlim的任务创建一个包装。信号量将强制实现所需的并发限制。等待它后,您可以创建并开始您想要运行的真实任务。

该解决方案可以使用内置工具轻松实现,但它的缺点是必须一次启动全部25个任务。所以你不能用这种技术处理大量或无限的工作流。在你的情况下似乎不是问题。

相关问题