J'écris le service de Windows qui effectue périodiquement un travail en arrière-plan. Et quand il fait ce travail, je devrais interdire l'ordinateur de passer en mode veille automatiquement. J'ai défini CanHandlePowerEvent sur true et remplacé la méthode OnPowerEvent. Je reçois des PowerBroadcastStatus, mais QuerySuspend jamais. Donc, quand l'ordinateur est inactif puis après un certain temps je reçois PowerBroadcastStatus.Suspend, mais je suppose, que je devrais obtenir PowerBroadcastStatus.QuerySuspend et au cas où mon service est occupé avec son travail, je devrais retourner false et c'est interdit d'ordinateur pour aller dormir mode. Pourquoi QuerySuspend ne vient jamais?Windows service QuerySuspend ne vient jamais
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
{
switch (powerStatus) {
case PowerBroadcastStatus.BatteryLow:
case PowerBroadcastStatus.OemEvent:
case PowerBroadcastStatus.PowerStatusChange:
case PowerBroadcastStatus.QuerySuspendFailed:
break;
case PowerBroadcastStatus.QuerySuspend: {
return MyProc.IsIdle;
break;
}
case PowerBroadcastStatus.ResumeAutomatic:
case PowerBroadcastStatus.ResumeCritical:
case PowerBroadcastStatus.ResumeSuspend:
Play();
break;
case PowerBroadcastStatus.Suspend:
Pause();
break;
}
return true;
}