Сохраните WindowState и восстановите его после перезагрузки / повторного запуска
Я работаю над приложением WPF, которое должно хранить свое состояние окна (нормальное / свернутое) - даже если система выключается или выходит из системы.
Событие WindowClosing используется для хранения состояния. Проблема в том, что завершение работы / выход из системы заставляет окно закрываться. Поэтому состояние окна всегда минимизируется после перезагрузки.
- Есть ли безопасный способ проверить, выключается ли система? (Я старался
Environment.HasShutdownStarted
, но идентификатор не работает). - Есть ли способ получить уведомление об изменениях состояния окна, кроме события WindowClosing?
[Править] Ответы на вопрос, помеченные как дублирующие, не удовлетворяют:
SystemEvents.SessionEnding
не является правильным решением, потому что msdn говорит: "Если вы используете SessionEnding в форме Windows для обнаружения выхода из системы или перезагрузки, не существует детерминированного способа определить, будет ли событие Closing срабатывать до этого события".GetSystemMetrics(SM_SHUTTINGDOWN)
может работать (я не проверял это), но это требует PInvoke, и я предпочитаю управляемое решение.Итак, наконец, предложение от d.moncada (используя
Application.SessionEnding
событие) является лучшим решением для моей проблемы.
1 ответ
Есть ли безопасный способ проверить, выключается ли система? (Я пробовал Environment.HasShutdownStarted, но id не работал).
Вы хотите знать, когда система (компьютер) закрывается или приложение?
Если это приложение, вы можете использовать Window.Closing
событие.
Смотрите здесь.
Если это для системы, вы можете слушать Application.SessionEnding
событие.
Смотрите здесь.
Есть ли способ получить уведомление об изменениях состояния окна, кроме события WindowClosing?
Вы смотрели на StateChanged
событие Window
?
Больше информации смотрите здесь