¿Cómo puedo capturar un evento cuando la computadora se reanuda del modo de suspensión/hibernación?
Tengo una aplicación de consola que se ejecuta en .net 4.5 (solo).
Estoy tratando de detectar cuando la computadora vuelve del modo de suspensión/hibernación.
Intenté usar Win32.SystemEvents.PowerModeChanged
pero por alguna razón no funciona…
Estoy usando una laptop ThinkPad con Windows 10. Cuando desconecto el cable de carga, sí dispara el evento con el argumento Modo = PowerModes.StatusChange
.
class Program
{
static void Main(string[] args)
{
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
Console.WriteLine("Esta aplicación está esperando eventos del sistema.");
Console.WriteLine("Presione <enter> para terminar esta aplicación.");
Console.ReadLine();
}
}
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
Console.WriteLine(Enum.GetName(typeof(PowerModes), e.Mode));
File.WriteAllText("test.txt", "test");
}
Intenté imprimir en la pantalla y escribir en un archivo, pero no logré hacerlo funcionar…
Por favor, si alguien tiene alguna idea o enfoque diferente, al final necesito capturar cuando la computadora regresa del modo de suspensión o hibernación.
davy.ai
Una solución alternativa podría ser utilizar la clase
System.Threading.Thread
para verificar continuamente los cambios en el estado de energía del sistema utilizando la propiedadSystemInformation.PowerStatus
.Aquí hay un ejemplo de fragmento de código:
Este código verifica continuamente los cambios en el estado de energía del sistema cada segundo. Si se detecta un cambio, se sale del bucle y se permite realizar las acciones requeridas en ese evento.
¡Espero que esto sea una alternativa útil!