2015-02-24 85 views
0

我正在開發一個使用winforms的文檔轉換器。C#多線程在任何其他線程完成後添加線程

我想使用多線程並行轉換3個文件,並且任何一個文件轉換完成後,其他文件轉換必須作爲新線程啓動。

我想使用多線程,但我無法找到如何在隊列中放置線程。

有什麼辦法可以在c#中實現這個。

+1

將線程放在隊列中並沒有多大意義。嘗試將任務放入隊列中,並讓線程工作。 – Peter 2015-02-24 08:43:03

+1

您可以使用線程池 – 2015-02-24 08:43:08

+0

您應該使用線程池並讓線程池管理器負責管理線程或使用任務/並行庫進行更多控制,但說實話,我認爲線程池將按照您的要求工作得很好。 – 2015-02-24 09:00:42

回答

3

我會用Task這個。許多信息可以在MSDN Task Parallelism中找到。

以最簡單的形式創建任務對象並啓動它們,之後您可以使用Task.WhenAny()來檢查它們中的任何一個是否已完成並開始更多。最後,您可以使用Task.WhenAll()查看所有任務何時完成。

您也可以創建所有任務並讓系統處理併發性,除非您特別需要三個併發運行。

2

據我所知,你正在尋找一種方式來處理併發的並行多個文件並行。您可以使用Parallel類來達到此目的。

ParallelOptions options=new ParallelOptions { MaxDegreeOfParallelism=3 }; 
Parallel.ForEach(documentCollection,options,document => ConvertDocument(document)); 
相關問題