以下代码不会退出应用程序。我如何退出应用程序并确保所有正在运行的线程都已关闭?如何退出所有正在运行的线程?
foreach (Form form in Application.OpenForms)
{
form.Close();
}
Application.Exit();
以下代码不会退出应用程序。我如何退出应用程序并确保所有正在运行的线程都已关闭?如何退出所有正在运行的线程?
foreach (Form form in Application.OpenForms)
{
form.Close();
}
Application.Exit();
您不会在代码中显示任何线程的使用,但假设您的线程中有线程。
Thread myThread = new Thread(...);
myThread.IsBackground = true; // <-- Set your thread to background
myThread.Start(...);
A“HOWTO:停止多线程”从微软的文章要关闭所有线程,你应该所有的人设置为后台线程你开始之前,那么他们将被自动应用程序退出时,如关闭: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);
}
我在我的软件中经历了类似的问题,但不幸的是只是让线程在后台工作并没有解决问题。事实上,当线程返回数据(主要软件是数据驱动的),并且如果我关闭应用程序,则会导致Windows错误,从而产生调试消息。
那么什么是真正为我工作:
第1步:的所有线程在后台运行,如
Thread aThread = new Thread(MethodName);
aThread.IsBackground = true; //<-- Set the thread to work in background
aThread.Start();
步骤2:在窗体/应用程序调用的闭合动作Environment.Exit方法,如
Environment.Exit(Environment.ExitCode);
这使内存管理pe完美无缺,没有内存泄漏。
希望这会有所帮助。
这让我所做的工作:
而不是使用:这让其他线程开放
Application.Exit()
,请尝试使用:
Environment.Exit(Environment.ExitCode);
对不起,我不想重复。 Somdip Dey的回答让它为我工作。 – Jimmy 2017-07-25 16:27:45
@monkey_boys你在哪里使用的线程你的代码? – Kiril 2010-04-22 07:46:13