Application.Exit() 与 Form.Close()

在MSDN上的解释是:       
    Application.Exit   方法  
    该方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit   方法通常从一个消息循环内调用,该方法强制   Run   返回。若要只退出当前线程的某个消息循环,请调用   ExitThread。   
    警告   当调用   Application.Exit   方法以退出应用程序时,不引发  Form.Closed  和 Form.Closing  事件。如果在必须执行的其中一个事件中有验证代码,则在调用  Exit  方法之前,应分别为每个打开的窗体调用  Form.Close   方法。    
 

    其实,程序从Application.Run(new   Form1)开始,到Application.Exit()结束,//销毁窗体,回收资源除外  
    这之中,如果你打开了1个窗体,这两种方法就是一样,如果打开多个,比如你Form1里又开了form2,form3等等,那么,你除了Application.Run()参数以外的实例,执行close就是关闭那个窗体,程序不退出,Application.Exit就都关闭了。

  

 但是 调用 Application.Exit() 并不一定能让程序立即退出,程序会等待所有的前台线程终止后才能真正退出。
解决方法:
1. 背景线程
为避免因为线程造成程序无法退出,可以将线程设置为后台线程(IsBackground = true)。
当然,这样一来,你需要自行处理后台线程的数据操作安全。

2. Environment.Exit(0);
该方法会强制进程关闭,并给操作系统一个退出代码。

转载于:https://www.cnblogs.com/zhouweiwei/archive/2009/11/30/1614025.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值