Application.ExitApplication.Exit(Application.Exit)

2019-05-14 00:57发布

我使用VSTS 2008 +的.Net 3.5 + C#开发Windows窗体应用程序。 我的困惑是,似乎Application.Exit不强制应用程序终止? 如果不是,该方法应该我叫提出申请终止?

编辑1:

一般情况下,主要的方法是这样的,如何正常退出主要功能,而无需调用Environment.Exit?

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

在此先感谢,乔治

Answer 1:

Application.Exit真的只是询问消息循环非常缓慢。

如果你希望你的应用程序退出,最好的办法是优雅做出来的Main ,和干净地关闭任何额外的非后台线程。

如果你想成为残酷...... Environment.ExitEnvironment.FailFast注意,这是严酷的-约等于杀死你自己的Process



Answer 2:

尝试以下方法:

Process.GetCurrentProcess().Kill();

Environment.Exit不工作的WinForms和Environment.FailFast抛出自己的异常。



Answer 3:

如果当你打电话给你的应用程序不正常退出Application.Exit有(显然)的东西,阻止它这样做。 这一点可以从一种形式进行任何设置e.Cancel = trueFormClosing事件,一个线程不是一个后台线程仍在运行。 我会建议你仔细研究它到底是什么,让您的过程中活着,并关闭在一个不错的方式。 这应该使您的应用程序很好地接近为好。

典型地,在一个WinForms应用程序,它应该是足以关闭的主要形式。



Answer 4:

我用

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



Answer 5:

我有同样的问题时,我发现了程序中打开一个新的形式/窗口,只有隐藏了第二种形式(不关闭它),将阻止主要形式,从通过Application.Exit正常退出();

还有在这种情况下两种解决方案。 首先是简单的主要形式,而不是Application.Exit上使用关闭()()。 第二个解决方法是使用下面的代码:

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


Answer 6:

我发现根本,所有你需要做的就是做insted的的application.exit和所有你不得不做的就是把结束足够简单结束命令关闭它



文章来源: Application.Exit