2017-06-14 919 views
1

我有C#wpf應用程序,當我退出時,我有messagebox「你確定要退出」,如果按下確定那麼一切都關閉,應用程序正在退出。但是當我通過任務管理器關閉應用程序時,會顯示消息框,3-4秒後應用程序正在退出。每次關閉wpf應用程序時,我都需要保存在數據庫中,甚至通過任務管理器。我該如何做到這一點? 謝謝如何捕獲WPF應用程序的退出

+0

旁邊的問題:如果用戶通過任務管理器(或關閉Windows)殺死應用程序,那麼......你確定她想保存更改嗎?甚至更重要的是,當你簡單地關閉Windows並離開時,你確定她會一直等待從應用程序中看到消息框嗎?在應用程序關閉時保持更改可能不是應用程序的最佳解決方案(關於崩潰?) –

+0

如下所述(以及所引用的重複問題),您不能這樣做。有很多方法可以檢測到進程的正常關閉(並且您似乎已經在執行此操作),但是始終存在終止進程而無法運行更多代碼的可能性。 –

+0

這不是一個重複的問題,這是wpf應用程序不是mfc。有不同的事件。彼得Duniho慈善需要,使我的問題可以回答,而不是標記爲重複 – Sonja

回答

-1

你需要做的是有點複雜,因爲用戶總是有關閉你的應用程序的可能性。其他情況下,當您無法控制應用程序的良好關閉時,PC意外關閉。

在這裏,你是一個很好的鏈接,這個話題進行了討論:Prevent C# app from process kill

0

你有可能會感興趣ClosingClosed兩個事件。

關閉

發生關閉直接調用後,可辦理取消窗口關閉。

和關閉

當窗口即將關閉時發生。

你會使用它們像這樣

<Window ... Closing="Window_Closing" Closed="Window_Closed"> 
    ... 
</Window> 

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    ... 
} 

private void Window_Closed(object sender, EventArgs e) 
{ 
    .... 
} 

由於this後說,你仍然可以陷阱Closing事件,並從那裏處理。