可能重复:
Application.Exit
我有一个Winforms应用,其中Application.Exit()
无法运行。
public Form1()
{
InitializeComponent();
path=parseINI();//Gets path from ini file
}
在我的情况下,从parseINI方法调用Application.Exit()
,它不起作用。是应用程序启动时调用它的问题吗?我把它粘贴在另一个在加载表单后运行的方法中,它在那里工作。我确实在我的parseINI方法中使用了Environment.Exit,这很有用(尽管它适用于控制台应用而不是WinForms)。
编辑:我应该添加它作为检查,以确保正在读取的文件格式正确,如果是,则不调用,否则程序退出。
答案 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()
之间的区别。