C#开发的应用程序——退出时需要执行的代码

本文详细介绍了C#中退出应用程序的多种方法及其优缺点,包括Application.Exit、this.Close、Application.ExitThread、Environment.Exit及Process.GetCurrentProcess.Kill等,并讨论了线程处理和资源回收的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自
开发的各种退出应用程序的代码。并详细介绍了各实现方法的不同点。

Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵

this.Close();//只是关闭当前窗体。

Application.ExitThread();//退出当前线程上的消息循环,并关闭该线程上的所有窗口。 也会失灵

Environment.Exit(0); //前面三种方法都不能很好的退出程序,此方法可以完全退出程序,这个要强制得多。

Process.GetCurrentProcess().Kill();//此方法完全奏效,绝对是完全退出。

一些操作可以关注:GC.Collect()

另:

1,将主线程设置为后台进程。方法是将主线程的isBackground = true。据说,这样在关闭主程序时后关闭主线程,并关闭所有的线程。

2,有人列出了c#程序退出的几种方法:

 (1)Application.Exit()//好像只在主线程可以起作用,而且当有线程,或者是阻塞方法的情况下,很容易失灵。

 (2) System.Environment.Exit(0) //无论在主线程或其它线程,都可以吧程序结束干净

 (3)Application.ExitThread();

但是我发现(2)这个方法在.netFrame Work compact下是没有的我这样

最后我的解决办法是:强制退出程序进程。代码如下:

System.Diagnostics.Process tt = System.Diagnostics.Process.GetProcessById(System.Diagnostics.Process.GetCurrentProcess().Id); tt.Kill();

当然,这种方法很暴力。良好的程序设计应该是,所有的线程都有条件可以结束循环以退出(包括timer)。在程序退出时触发所有线程的终止条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值