C#使用Application.Exit()有时无法真正退出程序,它和Environment.Exit(0)区别是什么?
程序员文章站
2022-03-07 16:05:07
...
Application.Exit()有时无法真正退出程序的原因:
如果程序是多线程的,其中有前台线程(即没有被显式设置IsBackground=true的线程),当调用Application.Exit方法后,由于前台线程还在运行,往往会造成Application.Exit失效。
解决方法之一:
//先关闭窗口
this.Close();
//再退出程序
Application.Exit();
Application.Exit:
通知winform消息循环退出,会在所有前台线程退出后,才真正的退出应用。(先停止线程,然后终止进程)
Environment.Exit:
立即终止当前进程,应用程序即强制退出,返回exitcode给操作系统。(直接终止进程)
因此我们可以构造以下的restart()函数重新启动应用程序
private static void ReStart()
{
Application.Exit();
System.Diagnostics.Process.Start(Application.ExecutablePath);
}
用Environment.Exit就无法完成这个功能