C# 调用Close后将引发System.ObjectDisposedException
我创建了一个表单来处理对我的应用程序的登录,如果登录表单在未登录的情况下关闭(例如,Alt-F4-ing),我将尝试使应用程序退出。为此,当C# 调用Close后将引发System.ObjectDisposedException,c#,winforms,C#,Winforms,我创建了一个表单来处理对我的应用程序的登录,如果登录表单在未登录的情况下关闭(例如,Alt-F4-ing),我将尝试使应用程序退出。为此,当对话框result.OK未返回时,我在主窗体上调用Close()。但是应用程序在main中抛出异常。运行 这是我正在做的一个项目。尝试搜索答案,并在主窗体中找到一些调用Application.Exit()的语句,但这只会使我的窗体重新出现 主窗体的构造函数: public Menu() { InitializeComponent(); For
对话框result.OK
未返回时,我在主窗体上调用Close()
。但是应用程序在main
中抛出异常。运行
这是我正在做的一个项目。尝试搜索答案,并在主窗体中找到一些调用Application.Exit()
的语句,但这只会使我的窗体重新出现
主窗体的构造函数:
public Menu()
{
InitializeComponent();
Form login = new Login_Forms.Login();
Hide();
if (login.ShowDialog(this) != DialogResult.OK)
Close();
else
Show();
}
Main():
程序本身可以运行,但这里抛出的异常让我抓狂。我正在寻找一种方法来正确关闭主窗体,这样就不会在主窗体中引发异常。在对象完全创建之前,您正在构造函数中调用
close()
。将代码移动到整个代码都应该重构,如果应用程序的启动需要用户响应对话框,为什么不先显示对话框,为什么构建“主窗体”并让它显示此对话框?
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Menu()); // This line throws System.ObjectDisposedException
}