C# Application.Run异常未处理

C# Application.Run异常未处理,c#,winforms,dispose,argumentexception,C#,Winforms,Dispose,Argumentexception,我有一个需要关闭应用程序的条件,因此在设置certian标志时调用this.Dispose() 起初,我认为调用这个.Dispose()后调用函数是个问题,所以我将代码移到最后一个调用的对象,但我仍然在Application.Run(new myApp();第行)上得到一个“ArgumentException was unhandled”“Parameter is not valid.” 我做错了什么?我错过了什么吗?或者可能有更好的方法来关闭应用程序?如果你关闭应用程序,从而卸载AppDoma

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

起初,我认为调用这个.Dispose()后调用函数是个问题,所以我将代码移到最后一个调用的对象,但我仍然在Application.Run(new myApp();第行)上得到一个“ArgumentException was unhandled”“Parameter is not valid.”


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

如果你关闭应用程序,从而卸载AppDomain,你真的不需要调用Dispose()因为AppDomain中的所有内容都将从内存中删除。

如果要关闭应用程序并卸载AppDomain,则实际上不需要调用Dispose(),因为AppDomain中的所有内容都将从内存中删除。

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


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

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


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

您应该使用this.Close()而不是this.Dispose()关闭你的主窗体。

你应该使用这个.close()而不是这个.Dispose()来关闭你的主窗体。

为什么这样做很好,我会吻你,但我打赌我会被stackoverflow禁止:)为什么这样做很好,我会吻你,但我打赌我会被stackoverflow禁止:)