如何退出所有正在运行的线程?
以下代码不会退出该应用程序。 我怎样才能退出应用程序,并确保所有正在运行的线程都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);