0

我有一个游戏应用程序,当游戏窗体关闭时,主菜单总是弹出。因此,当用户关闭主菜单窗体时,所有应用程序都应该停止运行。我正在尝试处理主菜单的 Form_Closed 事件并执行 Application.Exit() 但这似乎不起作用,即使所有表单都已关闭,应用程序仍在运行,我必须手动停止它。

这是我在游戏表单和主菜单表单中关于关闭的代码:

游戏形式:

private void GameForm_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dialogResult = MessageBox.Show("Are you sure you want to close this game?", "Exit Game", MessageBoxButtons.YesNo);

    if (dialogResult == DialogResult.Yes)
    {
        this.Hide();   // hide the Game Form

    }
    else if (dialogResult == DialogResult.No)
    {
        e.Cancel = true;    // cancel form closure
    }

}

private void GameForm_FormClosed(object sender, FormClosedEventArgs e)
{
    MainMenu menu = new MainMenu();
    menu.Show();
}

并在主菜单形式中:

private void MainMenu_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}

我做错了什么,还是我应该添加一些东西才能使它起作用?

4

2 回答 2

1

你有任何线程在运行吗?

在所有线程完成之前,您的应用程序不会退出,除非您将它们设置为“后台线程

于 2012-12-02T17:08:35.327 回答
0

考虑到您在谈论游戏应用程序,您会使用外部资源或某些游戏引擎。退出应用程序之前,请确保您释放/处置/清理您在应用程序中使用的资源。

例如,要跟踪打开的句柄,可以使用Handle

于 2012-12-02T16:53:11.097 回答