我正在开发一个应该存储其窗口状态(正常/最小化)的WPF应用程序 - 即使系统正在关闭或注销。
WindowClosing事件用于存储状态。问题是,关闭/注销会强制关闭窗口。因此,重启后窗口状态始终最小化。
Environment.HasShutdownStarted
,但是ID没有用。)[编辑] 这个被标记为dublicate的问题的答案并不令人满意:
SystemEvents.SessionEnding
不是正确的解决方案,因为msdn说:“如果您在Windows窗体中使用SessionEnding来检测系统注销或重新启动,则没有确定的方法来决定Closing事件是否会在此事件之前触发。“
GetSystemMetrics(SM_SHUTTINGDOWN)
可能有用(我没有测试过),但它需要PInvoke,我更喜欢托管解决方案。
最后,来自d.moncada的建议(使用Application.SessionEnding
事件)是我问题的最佳解决方案。