C#等待所有线程在Main()中完成

C#等待所有线程在Main()中完成,c#,multithreading,C#,Multithreading,我一直在编写一个多线程应用程序来解决迷宫问题。我从我的程序类,Main()方法中启动一个新线程,开始求解迷宫。然后,如果发现分支,他将调用一个静态方法来创建一个新线程。我如何等待后台运行的所有线程完成,例如显示完成消息 这是我想做的一件事: var explorer = new Explorer(/*Some arguments*/); var thread = new Thread(explorer.Explore) {Name = "Thread 0"}; thread.Start();

我一直在编写一个多线程应用程序来解决迷宫问题。我从我的
程序类
Main()
方法中启动一个新线程,开始求解迷宫。然后,如果发现分支,他将调用一个静态方法来创建一个新线程。我如何等待后台运行的所有线程完成,例如显示完成消息

这是我想做的一件事:

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();
有办法做到这一点吗?老实说,这是我第一次用这种方式处理多线程,所以我为糟糕的代码道歉。我非常乐意提供任何其他信息。提前谢谢。

也许这就是你要找的

你也可能会发现它很有用。

也许这就是你想要的


您可能也会发现它很有用。

多线程是一个非常有趣的主题

既然您是在线程方面迈出了第一步,我建议您仔细阅读Microsoft的优秀文章


祝你快乐

多线程是一个非常有趣的主题

既然您是在线程方面迈出了第一步,我建议您仔细阅读Microsoft的优秀文章


祝你快乐

我试过了,但它只对
线程0
线程有效,其他线程继续工作。我收到“我做完了,兄弟”的信息,然后更多的数据进来了。“也许我做错了什么?”琼,你的问题只有一条线索。如果有多个线程,则必须对每个线程调用
Join
。@DourHighArch从
程序
类中创建的一个线程开始,但当线程工作时,他将调用一个静态方法(在另一个类中)创建其他线程,以继续探索迷宫的其他部分。但这不是在
程序
类中实现的。因此,我无法知道在给定的时间内有多少线程在工作,以便对所有线程调用
Join()
。@Jean,然后在“另一个类”中调用
Join
。我尝试了它,但它只对
线程0
有效,其他线程继续工作。我收到“我做完了,兄弟”的信息,然后更多的数据进来了。“也许我做错了什么?”琼,你的问题只有一条线索。如果有多个线程,则必须对每个线程调用
Join
。@DourHighArch从
程序
类中创建的一个线程开始,但当线程工作时,他将调用一个静态方法(在另一个类中)创建其他线程,以继续探索迷宫的其他部分。但这不是在
程序
类中实现的。因此,我无法知道在给定的时间内有多少线程在工作,以便对所有线程调用
Join()
。@Jean,然后在“另一个类”中调用
Join