Application.Exit

我正在使用VSTS 2008 + .Net 3.5 + C#来开发Windows窗体应用程序。 我的困惑是,似乎Application.Exit不强制应用程序终止? 如果没有,我应该调用哪种方法使应用程序终止?

编辑1:

通常主要方法是这样的,如何在不调用Environment.Exit的情况下优雅地退出Main函数?

static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); try { Application.Run(new Form1()); } catch (Exception ex) { Console.WriteLine (ex.Message); } } 

乔治,提前谢谢

Application.Exit真的只是非常轻柔地询问消息循环。

如果您希望应用程序退出,最好的方法是优雅地将其从Main删除,并干净地关闭任何其他非后台线程。

如果你想要野蛮…… Environment.ExitEnvironment.FailFast注意这很苛刻 – 就像杀死你自己的Process

请尝试以下方法:

 Process.GetCurrentProcess().Kill(); 

Environment.Exit不适用于Winforms和Environment.FailFast会抛出自己的exception。

如果你的应用程序在调用Application.Exit时没有正常退出,那么(显然)有一些东西会阻止它这样做。 这可以是从FormClosing事件中的表单设置e.Cancel = true到不是仍在运行的后台线程的线程。 我建议你仔细研究确保你的过程保持活力的原因,并以一种很好的方式关闭它。 这应该使您的应用程序也很好地关闭。

通常,在winforms应用程序中,关闭主窗体应该足够了。

我用

 if (System.Windows.Forms.Application.MessageLoop) { // Use this since we are a WinForms app System.Windows.Forms.Application.Exit(); } else { // Use this since we are a console app System.Environment.Exit(1); } 

来自http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

当我发现在程序中打开一个新的窗体/窗口时,我遇到了同样的问题,并且仅隐藏第二个窗体(不关闭它)会阻止主窗体通过Application.Exit()正确退出;

在这种情况下有两种解决方案。 首先是在主窗体上使用Close()而不是Application.Exit()。 第二种解决方案是使用以下代码:

 if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose(); 

我发现你只需要做的就是做了application.exit,所有你需要做的就是把它放到End中就足够了,End命令关闭它