2012-10-17 172 views
2

我一直在編寫一個多線程應用程序來解決迷宮。我開始從我的Program ClassMain()方法開始一個新的線程,開始解決迷宮。然後他會調用靜態方法創建一個新的線程,如果他發現分叉。我如何等待所有在後臺運行的線程完成,以便例如顯示完成消息?C#等待所有線程完成Main()

這是什麼,我試圖做一個eskeleton:

var explorer = new Explorer(/*Some arguments*/); 
var thread = new Thread(explorer.Explore) {Name = "Thread 0"}; 
thread.Start(); 

//Thread_0_and_Threads_he_generates_through_static_class.Join()  

Console.WriteLine("I'm done bro."); 
Console.ReadKey(); 

有沒有辦法做到這一點?老實說,第一次以這種方式使用多線程,所以我爲這些糟糕的代碼表示歉意。我會很樂意提供的任何其他信息。提前致謝。

回答

3

也許Thread.Join()是你在找什麼?您可能還會發現this article有用。

+0

我試過了,但它只適用於'線程0'線程,其他線程繼續工作。我得到了「我完成了兄弟」。消息,然後有更多的數據進來。也許我做錯了什麼? –

+0

@Jean,你的問題只有一個線程。如果你有多個線程,你必須在每個線程上調用'Join'。 –

+0

@DourHighArch它從'Program'類創建的一個線程開始,但隨着線程的工作,他將調用靜態方法(在另一個類中)創建其他線程以繼續探索迷宮的其他部分。但是這並不是在「程序」類中做出的。所以我無法知道在給定的時間有多少線程在所有的線程上調用Join()。 –

1

多線程是一個非常好的主題。

既然你正在採取線程的第一步,我建議你仔細參考微軟的Thread Synchronization優秀begginers文章。

快樂領導!