Application.Run抛出ArgumentException未处理

Mat*_*att 1 c# dispose argumentexception winforms

我有一个条件,我需要关闭应用程序,所以我设置一个certian标志时调用this.Dispose().

起初我认为在调用this.Dispose()之后调用函数是一个问题,因此我将代码移动到最后调用的东西,但我仍然得到"ArgumentException未处理""参数无效".在Application.Run(new myApp();行.

我究竟做错了什么?我一路上都错过了什么吗?或者可能有更好的方法来关闭应用程序?

Meh*_*ari 6

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

使用时Application.Run(new MyForm());,使用表单对象作为主窗体在线程上创建消息循环.它尝试将来自应用程序的Win32消息传递给各自的对象.但是,当您调用Dispose()表单对象时,尚未退出消息循环.当它尝试将下一条消息传递给您的表单对象时,它会失败,因为它已经处理并抛出异常.您应该要求关闭表单(通过调用Close表单),然后要求表单处理事件,如果已完成,则在之后退出消息循环.另一种方式(更直接的方式)是通过调用来关闭线程上的消息循环,Application.Exit()这将导致所有相关的表单被关闭.