我有一个用 C# 发布的应用程序。每当我通过单击红色退出按钮关闭主表单时,表单会关闭,但不会关闭整个应用程序。我在尝试关闭计算机时发现了这一点,随后被许多带有MessageBox我添加的警报的子窗口轰炸。
MessageBox
我试过Application.Exit了,但它仍然调用所有子窗口和警报。我也不知道如何使用Environment.Exit以及放入哪个整数。
Application.Exit
Environment.Exit
此外,每当我的表单调用FormClosedorFormClosing事件时,我都会使用this.Hide()函数关闭应用程序;这会影响我的应用程序的行为吗?
FormClosed
FormClosing
this.Hide()
来自 MSDN:
应用程序.退出
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。如果您已调用 Application.Run(WinForms 应用程序),这是要使用的代码,此方法会停止所有线程上所有正在运行的消息循环并关闭应用程序的所有窗口。
环境.退出
终止此进程并为底层操作系统提供指定的退出代码。这是您使用控制台应用程序时要调用的代码。
这篇文章Application.Exit vs. Environment.Exit指出了一个很好的提示:
您可以通过检查属性来确定是否System.Windows.Forms.Application.Run已调用。System.Windows.Forms.Application.MessageLoop如果为真,则 Run 已被调用,您可以假设 WinForms 应用程序正在执行如下。
System.Windows.Forms.Application.Run
System.Windows.Forms.Application.MessageLoop
if (System.Windows.Forms.Application.MessageLoop) { // WinForms app System.Windows.Forms.Application.Exit(); } else { // Console app System.Environment.Exit(1); }