我正在處理應存儲其窗口狀態(正常/最小化)的WPF應用程序 - 即使系統正在關閉或登錄。保存WindowState並在重新啓動/重新登錄後恢復
WindowClosing事件用於存儲狀態。問題是,shutdown/log off會強制關閉窗口。因此,重新啓動後窗口狀態總是最小化。
- 有沒有安全的方法來檢查系統是否正在關閉? (我試過
Environment.HasShutdownStarted
,但id沒有工作)。 - 有沒有辦法獲得有關WindowClosing事件以外的窗口狀態更改的通知?
[編輯] 問題,標記爲dublicate的答案,都沒有滿足:
SystemEvents.SessionEnding
是不是一個合適的解決方案,因爲msdn說:「如果你在使用SessionEnding Windows窗體檢測系統註銷或重新啓動,沒有確定性的方式來決定關閉事件是否會在此事件之前觸發。「GetSystemMetrics(SM_SHUTTINGDOWN)
可能工作(我沒有測試它),但它需要PInvoke,我更喜歡託管的解決方案。因此最後,d.moncada的建議(使用
Application.SessionEnding
事件)是我的問題的最佳解決方案。
是的,機器關閉時,它以最小的爲OP或多或少指示狀態解僱。 – CodeCaster
謝謝,Application.SessionEnding是一個適當的事件,可用於指示Windows是否正在關閉。 – JanDotNet