2013-06-22 111 views
0

我在列表中創建了25個任務。我只能在時間點擊10個線程。當前任務完成時繼續執行任務

我需要做一個我的列表的foreach,並使用TPL開始前10個任務。然後我想等到任何任務完成。如果任何任務完成,那麼我需要繼續我的foreach循環並開始我的第11個任務。同樣,我需要爲列表中的25個任務完成所有工作。

有什麼建議嗎?

+0

大小你能否更詳細地解釋你在做什麼,爲什麼?爲什麼不能使用'Parallel.ForEach()'而不是'Task's? – svick

+0

或TPL數據流。我發現數據流通常是一種很好的方法,只要OP有關於節流的問題(通常表示管線/網格場景)。 –

回答

0

這是一個常見的要求。 .NET Framework不包含內置的完美解決方案。一個好辦法是爲所有那些等待SemaphoreSlim的任務創建一個包裝。信號量將強制實現所需的併發限制。等待它後,您可以創建並開始您想要運行的真實任務。

該解決方案可以使用內置工具輕鬆實現,但它的缺點是必須一次啓動全部25個任務。所以你不能用這種技術處理大量或無限的工作流。在你的情況下似乎不是問題。

相關問題