在调用Close之后引发System.ObjectDisposedException

时间:2019-05-09 11:38:00

标签: c# winforms

我创建了一个处理我的应用程序登录的表单,如果关闭登录表单而不登录(例如Alt-F4-ing),我试图使应用程序退出。为此,当没有返回Close()时,我会在主窗体上调用DialogResult.OK,但会得到MainApplication.Run中引发的异常。

这是我正在研究的项目。尝试搜索答案,并发现了一些在主表单中呼叫Application.Exit()的说法,但这只是使我的表单重新出现。

主窗体的构造函数:

public Menu()
{
    InitializeComponent();
    Form login = new Login_Forms.Login();
    Hide();
    if (login.ShowDialog(this) != DialogResult.OK)
        Close();
    else
        Show();
}

Main():

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Menu());    // This line throws System.ObjectDisposedException
}

程序本身可以工作,但是这里抛出的异常使我发疯。我正在寻找一种正确关闭主窗体的方法,以便不会在Main中引发异常。

1 个答案:

答案 0 :(得分:2)

在完全创建对象之前,您正在构造函数中调用Close()。将您的代码移至Form.Load()