WinForm 之 程序退出(转)

在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他们各自的方法不一样,下面详细介绍一下。

1.this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

2.Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

4.System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

https://www.cnblogs.com/xuxiaoshuan/p/6861723.html

WinForm 中实现点击按钮退出程序的功能非常直观,只需为按钮的 `Click` 事件编写相应的处理逻辑即可。以下是完整的解决方案: ### 编写按钮点击事件以关闭应用程序 #### 方法一:使用 `Application.Exit()` 方法 这是最常见的方法之一,适用于需要彻底终止整个应用程序的情况。当用户点击按钮时,调用 `Application.Exit()` 即可安全地结束所有正在运行的应用程序线程[^1]。 ```csharp private void ExitButton_Click(object sender, EventArgs e) { Application.Exit(); } ``` 在此代码片段中,`ExitButton_Click` 是按钮控件的事件处理函数。每当用户点击该按钮时,都会触发此函数,并通过调用 `Application.Exit()` 来停止当前应用程序实例。 --- #### 方法二:使用 `this.Close()` 关闭当前窗体 如果只需要关闭特定窗体而非整个应用程序,则可以使用 `this.Close()` 方法。这种方法适合于多窗体应用环境下的单一窗体关闭操作[^2]。 ```csharp private void CloseFormButton_Click(object sender, EventArgs e) { this.Close(); } ``` 这里的关键在于理解两者的区别——`Application.Exit()` 终止整个应用程序及其所有打开的窗体;而 `this.Close()` 则仅限于关闭调用它的那个窗体对象[^2]。 --- #### 方法三:增加确认提示框 为了提高用户体验,在执行退出动作前通常会提供一个确认对话框让用户决定是否真的想要离开。这种做法可以通过结合 `MessageBox.Show` 函数来达成目标[^4]。 ```csharp private void ConfirmExitButton_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Are you sure to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { Application.Exit(); // 或者 this.Close() } } ``` 上述示例展示了如何向用户提供选项询问他们是否确实想退出程序。只有当用户的回应为 “Yes” 时才会继续执行退出命令[^4]。 --- ### 注意事项 - **资源释放**:无论采用哪种方式,请务必确保所有的外部资源(如文件流、数据库连接等)都已妥善清理完毕再进行退出流程。 - **异常捕获**:虽然一般情况下不会出现问题,但在生产环境中还是建议加入必要的错误捕捉机制以防万一发生意外状况影响正常退出过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值