2009-05-01 403 views
7

我從與xaml窗口綁定的類中調用Application.Current.Shutdown()ObjectDataProvider,但應用程序未關閉。任何人都可以幫我理解爲什麼?在我的主窗口關閉後,我的應用程序沒有完全關閉,它不會從任務管理器的進程列表中消失。WPF應用程序未正確關閉

回答

8

你有沒有創建任何線程來做後臺處理?如果有,請務必在其上設置.IsBackground屬性,或者讓它保持運行狀態

+0

不,我不直接創建線程,可能是WPF在其他線程中綁定或objectdataprovider資源? – 2009-05-01 08:39:06

1

如果在應用程序中有多個窗口或對話框,則可能需要明確關閉每個窗口或對話框。

與關閉對話框:

_myDialog.Close();

關閉所有窗口:

foreach(var window in Application.Current.Windows.ToList()) 
{ 
    window.Close(); 
} 
+0

我試試這個,它沒有幫助,我知道問題在哪裏,問題是當我調用shutdown()或close()時,objectdataprovider執行沒有終止,我認爲最好添加一個新問題,我現在要做的:) – 2009-05-01 10:16:13

+0

當然你可以用foreach替換for(i ...)?手動循環遍歷循環是如此上個世紀:-) – 2009-05-03 20:37:18

25

嘗試Environment.Exit(0)代替

4

不要忘了補充一點:

private void Window_Closed(object sender, EventArgs e) 
{ 
    Application.Current.Shutdown(); 
} 

希望這有助於。

0

我有同樣的問題,應用程序進程不會停止,雖然應用程序關閉。

在我的情況下,我從一個BackgroundWorker(下面的代碼)

BackgroundWorker BG = new BackgroundWorker(); 
BG.DoWork += new DoWorkEventHandler(BG_DoWork); 
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem 
BG.RunWorkerAsync(); 

實例化的窗口中打開一個窗口中運行的BackgroundWorker似乎不是這個問題之前,但通過擦除線的應用程序關閉正確

我從BackgroundWorker打開我的窗口,但使用主線程(代碼如下)

View.Dispatcher.BeginInvoke(new Action(delegate() 
{ 
    StockMinWindow MinWindow = new StockMinWindow(StockMinList); 
    MinWindow.Owner = View; 
    MinWindow.ShowDialog(); 
})); 

希望它有幫助。

0

我有一個問題,即使主窗口關閉,應用程序也不會關閉。事實證明,我已經在啓動畫面上完成了Hide()而不是Close(),所以它仍然潛伏在保持應用程序活着的後臺。

相關問題