ich auf einer WPF-Anwendung arbeite, die ihre Fenster Zustand (normal/minimiert) gespeichert werden sollten - auch wenn das System heruntergefahren oder loggin ab.Speicher Window und es wieder nach einem Neustart/Relogin
Das WindowClosing-Ereignis wird zum Speichern des Status verwendet. Das Problem besteht darin, dass das Herunterfahren/Abmelden das Schließen des Fensters erzwingt. Daher wird der Fensterstatus immer nach dem Neustart minimiert.
- Gibt es eine sichere Möglichkeit zu überprüfen, ob das System heruntergefahren wird? (Ich versuchte
Environment.HasShutdownStarted
, aber ID arbeitete nicht). - Gibt es eine Möglichkeit, über andere Fensterstatusänderungen als das WindowClosing-Ereignis benachrichtigt zu werden?
[Bearbeiten] Die Antworten der Frage, wie dublicate markiert sind, sind nicht befriedigend:
SystemEvents.SessionEnding
ist keine richtige Lösung, weil die msdn sagt: „Wenn Sie Sessionen in ein verwenden Windows-Formular, um eine Systemabmeldung oder einen Neustart zu erkennen, gibt es keine deterministische Möglichkeit zu entscheiden, ob das Closing-Ereignis vor diesem Ereignis ausgelöst wird. "GetSystemMetrics(SM_SHUTTINGDOWN)
kann funktionieren (ich habe es nicht getestet), aber es erfordert PInvoke und ich bevorzuge eine verwaltete Lösung.Endlich ist der Vorschlag von d.moncada (mit dem
Application.SessionEnding
Ereignis) die beste Lösung für mein Problem.
Ja, und während der Abschaltung der Maschine wird mit staatlichen Minimierte als OP gefeuert mehr oder weniger anzeigt. – CodeCaster
Danke, Application.SessionEnding ist ein ordnungsgemäßes Ereignis, das verwendet werden kann, um anzugeben, ob Windows heruntergefahren wird. – JanDotNet