Application.Exit()无法运行

时间:2012-12-19 19:06:16

标签: c# winforms

  

可能重复:
  Application.Exit

我有一个Winforms应用,其中Application.Exit()无法运行。

public Form1()
{       
   InitializeComponent();           
   path=parseINI();//Gets path from ini file           
} 

在我的情况下,从parseINI方法调用Application.Exit(),它不起作用。是应用程序启动时调用它的问题吗?我把它粘贴在另一个在加载表单后运行的方法中,它在那里工作。我确实在我的parseINI方法中使用了Environment.Exit,这很有用(尽管它适用于控制台应用而不是WinForms)。

编辑:我应该添加它作为检查,以确保正在读取的文件格式正确,如果是,则不调用,否则程序退出。

3 个答案:

答案 0 :(得分:3)

这可能是因为当表单执行时,您仍然没有通过Application.Run启动应用程序。

常见的启动代码模板如下:

Application.Run(new Form1());

如果是这种情况,请在Application.Run之前调用Application.Exit。因此,在调用exit之后,您可以有效地调用Run,因此应用程序将运行。

答案 1 :(得分:1)

在parseINI()中调用Form.Close()方法而不是Application.Exit()

答案 2 :(得分:1)

Environment.Exit()方法终止应用程序,关闭应用程序线程。确实,来自documentation

  

终止此过程并为底层操作系统提供指定的退出代码。

为什么必须在parseINI方法中关闭应用程序?

无论如何,Application.Exit()的方法调用对你不起作用,因为,阅读MSDN page

  

此方法停止所有线程上的所有正在运行的消息循环,并关闭应用程序的所有窗口。此方法不会强制应用程序退出。 Exit方法通常在消息循环中调用,并强制Run返回。要仅退出当前线程的消息循环,请调用ExitThread。

然后,您可以将此行添加到构造函数中,然后运行"运行"该应用程序,允许您使用Application.Exit()

Application.Run(new YourForm());

您可以在此处找到有趣的讨论:http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

阅读this answer了解详情。 此外,请阅读this重要的SO问题,以便更好地理解Environment.Exit()Application.Exit()之间的区别。