Application.Exit

时间:2009-06-29 08:19:03

标签: c# .net winforms visual-studio-2008 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);
        }
    }
提前谢谢, 乔治

6 个答案:

答案 0 :(得分:35)

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

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

如果你想要残忍...... Environment.ExitEnvironment.FailFast注意这很苛刻 - 就像杀死你自己Process一样。

答案 1 :(得分:16)

尝试以下方法:

Process.GetCurrentProcess().Kill();

Environment.Exit不适用于Winforms,Environment.FailFast会抛出自己的异常。

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

我用

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:-1)

我发现只需要做所有你需要做的就是做application.exit,而你只需要做的就是放入 结束 只需足够的End命令关闭它