Witam.
W mojej aplikacji WPF pisanej w C# pod .NET 4.8 próbuję przechwycić moment, gdy system jest usypiany lub hibernowany.
Wykorzystuję do tego Microsoft.Win32.SystemEvents.PowerModeChanged.
Na komputerze stacjonarnym, na którym tworzę tą aplikację wszystko działa prawidłowo. Ale na laptopie z tym samym systemem (Windows 10) aplikacja nie przechwytuje zdarzenia zmiany stany zasilania. Ten sam kod.
Aplikacja jest okienkowa (nie serwis). Próbowałem przypisywać to zdarzenie w konstruktorze, potem w zdarzeniu Loaded() głównego okna i nic to nie zmienia.
Czy ktoś natknął się na taki problem?
Mam wrażenie że ten laptop nie do końca się usypia (tak jakby dalej działały wszystkie zadania). Zdarzenia na zamknięcie pokrywy są ustawione na usypianie, ręczne wywołanie uśpienia z menu start też nic nie zmienia.
Gdzie jest problem?
Poniżej mój kod:
Microsoft.Win32.SystemEvents.PowerModeChanged += new Microsoft.Win32.PowerModeChangedEventHandler(OnPowerChange);
private void OnPowerChange(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
{
ExceptionHandler.Instance.LogTrace(string.Format("OnPowerChange to: {0}", e.Mode.ToString()));
if (e.Mode == Microsoft.Win32.PowerModes.Suspend)
{
Logout();
}
}