2011-01-01 31 views
9

Tengo una aplicación que realiza una tarea específica después de un tiempo (controlada por un temporizador). Pero cada vez que comienzo a PC después de hibernar esa aplicación se ejecuta. Esto significa que el temporizador se mantiene funcionando durante la hibernación durante al menos un tic. ¿Cómo puedo evitar esto?¿Cómo detener un temporizador durante el modo de hibernación/suspensión en la aplicación C# winform?

+0

sólo para obtener este derecho, el temporizador está dentro de la aplicación (C#?) Que escribió. Usted inicia su aplicación, que inicia el temporizador. A continuación, pone su PC (suponiendo que Windows os) para dormir/hibernar. Después de un período de tiempo más largo que su temporizador, reinicia su computadora y se produce el evento de marcación de la aplicación. Ahora quiere saber cómo evitar que el temporizador "tic-tac", mientras su PC está hibernando. ¿Correcto? – froeschli

+0

@froeschli exactamente –

+0

siento decepcionarte, pero no puedo darte una respuesta a tu pregunta. – froeschli

Respuesta

17

Puede manejar el evento SystemEvents.PowerModeChanged para detener el temporizador cuando la máquina se suspende y volver a iniciarlo cuando se reanude.

SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; 

...

void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) 
    { 
     if (e.Mode == PowerModes.Suspend) PauseTimer(); 
     else if (e.Mode == PowerModes.Resume) ResumeTimer(); 
    } 
+0

¿cuál es el propósito de SystemEvents.PowerModeChanged + = SystemEvents_PowerModeChanged; –

+1

Esta es una asignación de evento/delegado. Siempre que se active el evento 'SystemEvents.PowerModeChanged', se llamará al método' SystemEvents_PowerModeChanged', con el modo en el parámetro 'e', que se pasa a la función. No he verificado esto, pero parece una solución plausible. – froeschli

+2

Una cosa importante a tener en cuenta en la [página MSDN] (http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.powermodechanged%28v=VS.90%29.aspx) para ' El evento SystemEvents.PowerModeChanged' es que deberá separar el controlador de eventos cuando se elimine su aplicación: 'SystemEvents.PowerModeChanged - = SystemEvents_PowerModeChanged;'. –

Cuestiones relacionadas