如何防止Windows操作系统进入睡眠模式 - .Net

时间:2015-02-26 19:32:34

标签: c# windows sleep-mode

使用C#,如何防止Windows操作系统进入睡眠模式?

我知道,我可以关闭睡眠模式,这就是我现在所做的。这个问题是关于在程序长时间运行时防止操作系统出现故障。然后,再次重新进入睡眠模式。

2 个答案:

答案 0 :(得分:3)

不建议应用程序更改电源设置 - 这是用户的偏好,应该按照他们认为合适的方式完成。应用程序可以通知系统它不需要进入睡眠状态,因为它执行的操作不需要用户交互。

系统将睡眠的标准详见:https://msdn.microsoft.com/en-us/library/windows/desktop/aa373233(v=vs.85).aspx。详细说明应用程序可以调用本机函数SetThreadExecutionState来通知系统特定需求,这些需求会影响系统应该如何决定休眠。如果您无需显示用户互动而无法显示该显示,则ES_DISPLAY_REQUIRED参数应发送至SetThreadExecutionState

例如:

public enum EXECUTION_STATE : uint
{
    ES_AWAYMODE_REQUIRED = 0x00000040,
    ES_CONTINUOUS = 0x80000000,
    ES_DISPLAY_REQUIRED = 0x00000002,
}

internal class NativeMethods
{
    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
}

//...

NativeMethods.SetThreadExecutionState(EXECUTION_STATE.ES_DISPLAY_REQUIRED);

答案 1 :(得分:1)

我认为您应该能够通过使用ES_SYSTEM_REQUIRED参数定期调用SetThreadExecutionState来阻止系统进入睡眠模式。

This article也可能有用。