0
我寫了windows服務,它定期在後臺模式下做一些工作。 當他做這項工作時,我應該禁止電腦自動進入睡眠模式。 我將CanHandlePowerEvent設置爲true,並重寫OnPowerEvent方法。我得到了一些PowerBroadcastStatuses,但是QuerySuspend從來沒有。 因此,當計算機空閒,然後一段時間後,我得到PowerBroadcastStatus.Suspend,但我期望,我應該得到PowerBroadcastStatus.QuerySuspend,如果我的服務忙於他的工作,我應該返回false,並且它禁止計算機進入睡眠模式。 爲什麼QuerySuspend永遠不會來?Windows服務QuerySuspend永遠不會出現
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;
}