C#使用Application.Exit()有时无法真正退出程序,它和Environment.Exit(0)区别是什么?

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就无法完成这个功能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值