如何退出所有正在运行的线程?

以下代码不会退出该应用程序。 我怎样才能退出应用程序,并确保所有正在运行的线程都closures?

foreach (Form form in Application.OpenForms) { form.Close(); } Application.Exit(); 

你不会在代码中显示任何线程的使用,但是假设你有线程。 要closures所有的线程,你应该在启动它们之前将它们全部设置为后台线程,然后当应用程序退出时它们将自动closures,例如:

 Thread myThread = new Thread(...); myThread.IsBackground = true; // <-- Set your thread to background myThread.Start(...); 

一个“如何:停止多个线程”文章从Microsoft: http : //msdn.microsoft.com/en-us/library/aa457093.aspx

你可以尝试下面的代码:

 Environment.Exit(Environment.ExitCode); 

这应该适用于您打开的所有线程。

 protected override void OnExiting(Object sender, EventArgs args) { base.OnExiting(sender, args); Environment.Exit(Environment.ExitCode); } 

我在我的软件中遇到了类似的问题,但不幸的是,只是让线程在后台工作并没有解决问题。 事实上,当线程返回数据(主要软件是数据驱动的),如果我closures应用程序,则会导致Windows错误,从而产生一条debugging消息。

那么究竟是为我工作的:

第1步:使所有线程运行在后台,如

 Thread aThread = new Thread(MethodName); aThread.IsBackground = true; //<-- Set the thread to work in background aThread.Start(); 

步骤2:在表单/应用程序的closures操作中调用Environment.Exit方法,例如

 Environment.Exit(Environment.ExitCode); 

这使内存pipe理完美,没有内存泄漏。

希望这可以帮助。

这为我完成了这项工作:

而不是使用:

 Application.Exit() 

这使其他线程打开,请尝试使用:

 Environment.Exit(Environment.ExitCode);