Пример #1
0
        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;
        }
Пример #2
0
 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");
     }
 }
Пример #3
0
 public static KeepAwakeContext Create(KeepAwakeRequirement requirement)
 {
     Instance.Value.SetKeepAwakeRequirement(requirement);
     return(Instance.Value);
 }