Я хочу, чтобы система не переходила в спящий режим / гибернацию из службы Windows.
Для этого я вызываю функцию SetThreadExecutionState
.
Но вроде не действует.
Я просто хочу знать, подходит ли функция SetThreadExecutionState
для служб Windows. Если нет, то какие будут альтернативные способы для этого.
Ниже приведен код C #, который я использую. Я вызываю его по методу обслуживания Onstart
.
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern uint SetThreadExecutionState(EXECUTION_STATE esFlags);
private void KeepAlive()
{
SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED | EXECUTION_STATE.ES_CONTINUOUS)
}