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 に答える