2012-12-02 146 views
0

我有一個遊戲應用程序,當遊戲窗體關閉時,總是彈出一個主菜單..因此,所有的應用程序應該停止運行,當用戶關閉主菜單表單。我正在嘗試處理主菜單的Form_Closed事件並執行Application.Exit(),但即使所有窗體都關閉,應用程序仍在運行,我不得不手動停止它。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(); 
} 

上午我做錯了什麼,或者有什麼我應該補充這個工作?

+0

可以請你提供什麼樣的不正是上班?:) –

+0

一切正常..只是應用程序繼續運行,即使我關閉表單!我必須手動停止! – Bernice

回答

0

考慮到您正在談論遊戲應用程序,您可以使用外部資源或某些遊戲引擎。 退出應用程序之前,請確保您在應用程序中使用的免費/處置/清理資源。

例如跟蹤打開的句柄可以使用Handle

+0

我擁有的唯一外部資源是圖像...我應該如何在form表單的form_closing事件中處理這些資源? – Bernice

+0

是的!確保你可以將你從文件中讀取的所有圖像對象都處置掉,這可能是一個原因。 – Tigran

+0

我試過了: private void MainMenu_FormClosing(object sender,FormClosingEvent參數e) { Dispose(); } 但仍然:/ – Bernice

1

你有任何線程中運行?

您的應用程序不會結束,除非你把其中的所有線程都完成之前"background thread

+0

沒有..沒有線程運行..它有任何區別,也許如果我隱藏其他形式時,用戶點擊關閉? – Bernice

相關問題