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

cit*_*kid 6 c# windows sleep-mode

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

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

Pet*_*hie 8

不建议应用程序更改电源设置——这是用户首选项,应该按照他们认为合适的方式进行。应用程序可以通知系统它不需要进入睡眠状态,因为它正在做一些不需要用户交互的事情。

系统休眠的标准在此处详细说明: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);
Run Code Online (Sandbox Code Playgroud)


Mår*_*röm 3

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

这篇文章可能也有用。