我在我需要关闭应用程序,所以我打电话this.Dispose()当我设置一个certian标志的状态。

起初我还以为是调用函数后,我打电话this.Dispose(的问题),并让我感动是最后这个事情的代码,但我仍然得到一个“ArgumentException的是未处理”,“参数无效“。在Application.Run(新对myApp();线

我在做什么错了?我错过了沿途的东西吗?或者,也许有更好的方式来关闭应用?

有帮助吗?

解决方案

尝试使用Application.Exit()退出应用程序。

当您使用Application.Run(new MyForm());,则使用表格对象为主要形式的线程上创建一个消息循环。它试图交付是来应用到它们各自的目标Win32的消息。然而,当你调用Dispose()在表单对象,你还没有退出的消息循环呢。当它试图传递一个消息到您的窗体对象,就因为它已经设置并抛出异常失败。您应该请求(通过调用形式Close)封闭的形式,然后会问的形式来处理该事件,如果完成了,之后退出消息循环。另一种方法(更直接的方式)是完全通过调用Application.Exit()这将导致封闭所有相关形式关闭线程消息循环。

其他提示

您应该使用this.Close(),而不是this.Dispose()关闭您的主要形式。

如果您要关闭的应用程序,从而卸载你并不真的需要调用Dispose(),因为从AppDomain的一切都会从内存中删除的应用程序域。

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