Application.Exit() - 关闭表单后仍在运行的应用程序

时间:2012-12-02 16:49:10

标签: c# forms exit-code formclosing

我有一个游戏应用程序,当游戏表单关闭时,主菜单总是会弹出..因此,当用户关闭主菜单表单时,所有应用程序都应该停止运行。我正在尝试处理主菜单的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();
}

我做错了什么,或者我应该添加一些东西来实现这个目的?

2 个答案:

答案 0 :(得分:1)

你有线程在运行吗?

除非您设置"background thread

,否则在完成所有线程之前,您的应用程序不会退出

答案 1 :(得分:0)

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

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