我在C#中有一个已发布的应用程序。这里的问题是,每当我通过单击红色退出按钮关闭主窗体时,它都会关闭窗体,但不会关闭应用程序。当我尝试关闭计算机时,我发现了这一点,希望我制作的应用程序运行平稳,然后被放置了MessageBoxAlerts 的许多子窗口轰炸了。
MessageBox
我尝试过,Application.Exit但它仍然调用所有子窗口和警报,并且我不知道如何使用Environment.Exit以及将哪个整数放入其中。
Application.Exit
Environment.Exit
顺便说一句,每当我的表单调用formclosedor form closing事件时,我都会使用一个this.Hide()函数关闭应用程序。这会影响我的应用程序现在的行为吗?
formclosed
form closing
this.Hide()
从MSDN:
申请退出
通知所有消息泵它们必须终止,然后在处理完消息后关闭所有应用程序窗口。如果您被称为Application.Run(WinForms应用程序),这是要使用的代码,此方法将停止所有线程上所有正在运行的消息循环并关闭应用程序的所有窗口。
环境出口
终止此过程,并为基础操作系统提供指定的退出代码。这是使用控制台应用程序时要调用的代码。
本文Application.Exit与Environment.Exit指向一个很好的提示:
您可以System.Windows.Forms.Application.Run通过检查System.Windows.Forms.Application.MessageLoop属性来确定是否已调用。如果为true,则已调用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); }
参考:为什么Application.Exit无法正常工作?