public override void SetKeepAwakeRequirement(KeepAwakeRequirement requirement) { base.SetKeepAwakeRequirement(requirement); EXECUTION_STATE newState; switch (requirement) { case KeepAwakeRequirement.Clear: newState = EXECUTION_STATE.ES_CONTINUOUS; break; case KeepAwakeRequirement.Screen: newState = EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED; break; case KeepAwakeRequirement.System: newState = EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_SYSTEM_REQUIRED; break; case KeepAwakeRequirement.Screen | KeepAwakeRequirement.System: newState = EXECUTION_STATE.ES_CONTINUOUS | EXECUTION_STATE.ES_DISPLAY_REQUIRED | EXECUTION_STATE.ES_SYSTEM_REQUIRED; break; default: throw new ArgumentOutOfRangeException(nameof(requirement), requirement, null); } var result = Native.SetThreadExecutionState(newState); if (result == 0) { throw new InvalidOperationException("SetThreadExecutionState failed for some reason."); } state = (EXECUTION_STATE)result; }
public virtual void SetKeepAwakeRequirement(KeepAwakeRequirement requirement) { if (requirement == GetKeepAwakeRequirement()) { return; } if ((requirement & KeepAwakeRequirement.Clear) != 0 && ( (requirement & KeepAwakeRequirement.Screen) != 0 || (requirement & KeepAwakeRequirement.System) != 0)) { throw new InvalidOperationException("Invalid combination of flags"); } }
public static KeepAwakeContext Create(KeepAwakeRequirement requirement) { Instance.Value.SetKeepAwakeRequirement(requirement); return(Instance.Value); }