我使用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);
}
}
在此先感谢,乔治
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();
我发现根本,所有你需要做的就是做insted的的application.exit和所有你不得不做的就是把结束足够简单结束命令关闭它