保存 WindowState 并在重启 /relogin 后恢复
Save WindowState and restore it after reboot /relogin
我正在开发应存储其 window 状态(正常/最小化)的 WPF 应用程序 - 即使系统正在关闭或注销。
WindowClosing 事件用于存储状态。问题是,shutdown/log off 强制关闭 window。因此,window 状态总是在重启后最小化。
- 有没有安全的方法来检查系统是否正在关闭? (我试过
Environment.HasShutdownStarted
,但 id 没有用)。
- 除了 WindowClosing 事件之外,还有其他方法可以通知 window 状态变化吗?
[编辑]
问题的答案,标记为重复,不令人满意:
SystemEvents.SessionEnding
不是正确的解决方案,因为 msdn 表示:"If you are using SessionEnding in a Windows form to detect a system logoff or reboot, there is no deterministic way to decide whether the Closing event will fire before this event."
GetSystemMetrics(SM_SHUTTINGDOWN)
可能有效(我没有测试),但它需要 PInvoke,我更喜欢托管解决方案。
最后,d.moncada 的建议(使用 Application.SessionEnding
事件)是解决我的问题的最佳方案。
Is there a safe way to check if the system is shutting down? (I tried
Environment.HasShutdownStarted, but id didnt work).
您想知道系统(计算机)或应用程序何时关闭吗?
如果是应用程序,可以使用Window.Closing
事件。
见here。
如果是系统的话,可以监听Application.SessionEnding
事件
见here。
Is there a way to get notified about window state changes other than
the WindowClosing event?
你看过Window
的StateChanged
事件了吗?
更多信息,请参见here
我正在开发应存储其 window 状态(正常/最小化)的 WPF 应用程序 - 即使系统正在关闭或注销。
WindowClosing 事件用于存储状态。问题是,shutdown/log off 强制关闭 window。因此,window 状态总是在重启后最小化。
- 有没有安全的方法来检查系统是否正在关闭? (我试过
Environment.HasShutdownStarted
,但 id 没有用)。 - 除了 WindowClosing 事件之外,还有其他方法可以通知 window 状态变化吗?
[编辑] 问题的答案,标记为重复,不令人满意:
SystemEvents.SessionEnding
不是正确的解决方案,因为 msdn 表示:"If you are using SessionEnding in a Windows form to detect a system logoff or reboot, there is no deterministic way to decide whether the Closing event will fire before this event."GetSystemMetrics(SM_SHUTTINGDOWN)
可能有效(我没有测试),但它需要 PInvoke,我更喜欢托管解决方案。最后,d.moncada 的建议(使用
Application.SessionEnding
事件)是解决我的问题的最佳方案。
Is there a safe way to check if the system is shutting down? (I tried Environment.HasShutdownStarted, but id didnt work).
您想知道系统(计算机)或应用程序何时关闭吗?
如果是应用程序,可以使用Window.Closing
事件。
见here。
如果是系统的话,可以监听Application.SessionEnding
事件
见here。
Is there a way to get notified about window state changes other than the WindowClosing event?
你看过Window
的StateChanged
事件了吗?
更多信息,请参见here