我正在開發一個使用winforms的文檔轉換器。C#多線程在任何其他線程完成後添加線程
我想使用多線程並行轉換3個文件,並且任何一個文件轉換完成後,其他文件轉換必須作爲新線程啓動。
我想使用多線程,但我無法找到如何在隊列中放置線程。
有什麼辦法可以在c#中實現這個。
我正在開發一個使用winforms的文檔轉換器。C#多線程在任何其他線程完成後添加線程
我想使用多線程並行轉換3個文件,並且任何一個文件轉換完成後,其他文件轉換必須作爲新線程啓動。
我想使用多線程,但我無法找到如何在隊列中放置線程。
有什麼辦法可以在c#中實現這個。
我會用Task
這個。許多信息可以在MSDN Task Parallelism中找到。
以最簡單的形式創建任務對象並啓動它們,之後您可以使用Task.WhenAny()
來檢查它們中的任何一個是否已完成並開始更多。最後,您可以使用Task.WhenAll()
查看所有任務何時完成。
您也可以創建所有任務並讓系統處理併發性,除非您特別需要三個併發運行。
據我所知,你正在尋找一種方式來處理併發的並行多個文件並行。您可以使用Parallel類來達到此目的。
ParallelOptions options=new ParallelOptions { MaxDegreeOfParallelism=3 };
Parallel.ForEach(documentCollection,options,document => ConvertDocument(document));
將線程放在隊列中並沒有多大意義。嘗試將任務放入隊列中,並讓線程工作。 – Peter 2015-02-24 08:43:03
您可以使用線程池 – 2015-02-24 08:43:08
您應該使用線程池並讓線程池管理器負責管理線程或使用任務/並行庫進行更多控制,但說實話,我認爲線程池將按照您的要求工作得很好。 – 2015-02-24 09:00:42