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

EDIT 1:

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

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

预先感谢, 乔治

有帮助吗?

解决方案

Application.Exit实际上只是询问消息循环非常平缓。

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

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

其他提示

尝试以下方法:

Process.GetCurrentProcess().Kill();

Environment.Exit不与工作的Winforms和Environment.FailFast抛出其自身的异常。

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

典型地,在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()适当地退出;

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top