2010-01-21 94 views
3

有一個WPF應用程序。如何知道應用程序正在關閉

我想在應用程序關閉時記錄日誌。

但我不能修改應用程序(一些限制,只是因爲業務)。

因此,我在現有的應用程序中創建一個不可見的窗體組件,添加爲一個dll庫,因此現有的應用程序不需要修改。

但問題是,我的隱形組件如何知道應用程序正在關閉?

是否有一些函數或事件處理函數可以使用?

解決方案:

有一些事件能做到這一點,

卸載 關閉 關閉

所有這三個事件會被解僱時,主窗口將被關閉。

問題解決

回答

4

System.Windows.Window類有一個虛擬的OnClosing(CancelEventArgs)方法,可以對此進行覆蓋,並且可以處理一個Closing事件。

我通常會捕獲這些事件並將信息傳遞給Page類,但遺憾的是,這些類不包含此類方法或事件。

每個窗口在關閉時都會觸發這些方法,所以不需要在父窗口和子窗口之間連線任何消息。而且,我相信,任務管理器將首先嚐試正常關閉應用程序,這會導致關閉事件觸發,除非其他對象(如對話框)阻止它。只有在此之後,TM纔會詢問是否要爲應用程序執行異常結束,這顯然會繞過關閉事件。

0

你檢查了FormClosing事件嗎?

0

我仍然沒有得到WPF的知識,但我不從的WinForms知道,有來自Form類的事件Closing,您可以捕獲並呈現對話框「此應用程序退出時,你想繼續等',並將Cancel標誌設置爲true以中止關閉表單,Application類中還有ApplicationExit事件,如果要處理關閉應用程序,則可以捕獲該事件。

希望這會有所幫助, 最好的問候, 湯姆。

相關問題