有一個WPF應用程序。如何知道應用程序正在關閉
我想在應用程序關閉時記錄日誌。
但我不能修改應用程序(一些限制,只是因爲業務)。
因此,我在現有的應用程序中創建一個不可見的窗體組件,添加爲一個dll庫,因此現有的應用程序不需要修改。
但問題是,我的隱形組件如何知道應用程序正在關閉?
是否有一些函數或事件處理函數可以使用?
解決方案:
有一些事件能做到這一點,
卸載 關閉 關閉
所有這三個事件會被解僱時,主窗口將被關閉。
問題解決
有一個WPF應用程序。如何知道應用程序正在關閉
我想在應用程序關閉時記錄日誌。
但我不能修改應用程序(一些限制,只是因爲業務)。
因此,我在現有的應用程序中創建一個不可見的窗體組件,添加爲一個dll庫,因此現有的應用程序不需要修改。
但問題是,我的隱形組件如何知道應用程序正在關閉?
是否有一些函數或事件處理函數可以使用?
解決方案:
有一些事件能做到這一點,
卸載 關閉 關閉
所有這三個事件會被解僱時,主窗口將被關閉。
問題解決
System.Windows.Window
類有一個虛擬的OnClosing(CancelEventArgs)
方法,可以對此進行覆蓋,並且可以處理一個Closing
事件。
我通常會捕獲這些事件並將信息傳遞給Page
類,但遺憾的是,這些類不包含此類方法或事件。
每個窗口在關閉時都會觸發這些方法,所以不需要在父窗口和子窗口之間連線任何消息。而且,我相信,任務管理器將首先嚐試正常關閉應用程序,這會導致關閉事件觸發,除非其他對象(如對話框)阻止它。只有在此之後,TM纔會詢問是否要爲應用程序執行異常結束,這顯然會繞過關閉事件。
你檢查了FormClosing事件嗎?
我仍然沒有得到WPF的知識,但我不從的WinForms知道,有來自Form
類的事件Closing
,您可以捕獲並呈現對話框「此應用程序退出時,你想繼續等',並將Cancel
標誌設置爲true以中止關閉表單,Application
類中還有ApplicationExit
事件,如果要處理關閉應用程序,則可以捕獲該事件。
希望這會有所幫助, 最好的問候, 湯姆。