2012-02-27 71 views
0

在我的WPF應用程序中,我使用SessionEnding事件來防止應用程序需要保存數據時關閉Windows。它的工作原理,但我不知道如何告訴Windows,我不需要阻止其關閉了。我有一個布爾變量,告訴節能是否正在發生。如果我阻止SessionEnding中的關閉,如何在結束時關閉我的應用程序?我不想在保存結束時關閉應用程序因爲我不知道用戶是否已取消關機。請幫忙。告訴Windows我不需要在WPF應用程序中阻止其關閉

+2

您的數據保存需要多長時間?如果速度很快,您可以保存響應,然後允許關機繼續。否則,如果您阻止關機,用戶需要再次手動關機。 – dlev 2012-02-27 20:41:37

回答

1

關閉Windows時只等待您的應用程序關閉。一旦您的應用程序保存了數據,請確保關閉它,Windows會檢測到該數據繼續關閉。

+0

好的,但是如果我在保存後關閉我的應用程序,但用戶已取消關機,該怎麼辦?我希望我的應用程序不要關閉。如何在用戶等待我的應用程序關閉時通知我取消關機。 – jozefkarton 2012-02-27 21:03:14

+0

未測試,但檢查此屬性:Environment.HasShutdownStarted – NestorArturo 2012-02-27 21:39:46

+0

@jozefkarton我不認爲有一個純粹的WPF方式來檢測這種情況。您可能能夠從覆蓋WndProc中獲取某些內容,並以棘手的方式處理WM_QUERYENDSESSION和WM_ENDSESSION。我的建議是,當你的應用由於系統關閉而關閉時,你並不需要從用戶按下「取消關機」的場景中恢復。我認爲,即使在關機期間關閉了幾個應用程序(包括您的應用程序),即使他們在某個時間點按下了取消,用戶也不會感到驚訝。 – 2012-02-27 21:54:43

相關問題