C# 调用Close后将引发System.ObjectDisposedException

C# 调用Close后将引发System.ObjectDisposedException,c#,winforms,C#,Winforms,我创建了一个表单来处理对我的应用程序的登录,如果登录表单在未登录的情况下关闭(例如,Alt-F4-ing),我将尝试使应用程序退出。为此,当对话框result.OK未返回时,我在主窗体上调用Close()。但是应用程序在main中抛出异常。运行 这是我正在做的一个项目。尝试搜索答案,并在主窗体中找到一些调用Application.Exit()的语句,但这只会使我的窗体重新出现 主窗体的构造函数: public Menu() { InitializeComponent(); For

我创建了一个表单来处理对我的应用程序的登录,如果登录表单在未登录的情况下关闭(例如,Alt-F4-ing),我将尝试使应用程序退出。为此,当
对话框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
}