How do I properly exit a C# application?(如何正确退出C#应用程序?)
问题描述
我有一个用C#发布的应用程序。每当我通过单击红色的退出按钮关闭主窗体时,窗体都会关闭,但不会关闭整个应用程序。当我尝试关闭计算机时,我发现了这一点,随后被许多子窗口轰炸,并添加了MessageBox
警报。
我尝试了Application.Exit
,但它仍然调用所有子窗口和警报。我也不知道如何使用Environment.Exit
,也不知道要放入哪个整数。
此外,每当我的窗体调用FormClosed
或FormClosing
事件时,我使用this.Hide()
函数关闭应用程序;这是否会影响我的应用程序的行为?
推荐答案
来自msdn:
Application.Exit
通知所有消息泵必须终止,然后在处理完消息后关闭所有应用程序窗口。如果您已调用Application.Run(WinForms应用程序),此方法将停止所有线程上正在运行的所有消息循环,并关闭应用程序的所有窗口。
Environment.Exit
终止此进程并向底层操作系统提供指定的退出代码。这是您使用控制台应用程序时要调用的代码。
这篇文章Application.Exit vs. Environment.Exit指向了一个很好的提示:
您可以通过检查System.Windows.Forms.Application.MessageLoop
属性来确定System.Windows.Forms.Application.Run
是否已被调用。如果为True,则已调用Run,您可以假定WinForms应用程序正在执行,如下所示。
if (System.Windows.Forms.Application.MessageLoop)
{
// WinForms app
System.Windows.Forms.Application.Exit();
}
else
{
// Console app
System.Environment.Exit(1);
}
引用:Why would Application.Exit fail to work?
这篇关于如何正确退出C#应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何正确退出C#应用程序?


基础教程推荐
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 全局 ASAX - 获取服务器名称 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01