keep怎样不会被后台关闭(C#桌面程序阻止电脑进入睡眠或者休眠)

首页教程更新时间:2023-05-14 23:28:02

通常我们使用电脑过程中会设置多长时间不操作,电脑就会灭屏、睡眠甚至是休眠。如果电脑进入睡眠或者休眠模式,电脑运行的程序将不再执行。如果我们设计的桌面程序一直在执行某种操作,比如持续的USB通信,操作人可能会离开很久,这个时候,我们不希望电脑进入睡眠或者休眠模式。那么该如何实现这一功能呢?

系统中相关接口文件是提供了这一功能,即调用如下方法即可:

[DllImport("kernel32")] private static extern ExecutionState SetThreadExecutionState(ExecutionState esFlags); [Flags] private enum ExecutionState : uint { SystemRequired = 0x01, DisplayRequired = 0x02, [Obsolete("This value is not supported.")] UserPresent = 0x04, AwayModeRequired = 0x40, Continues = 0x80000000, }

如上所示,只需要设置系统状态即可,ExcutionState各个枚举变量的含义为:SystemRequired,强行设置系统IDLE计时器,使得系统一直处于工作态;DisplayRequired,通过重置显示器IDLE计时器,使得显示器一直处于显示状态;Continues,系统状态维持当前状态,直到下一次方法调用或者标志位改变。

Microsoft官网参考链接为:

keep怎样不会被后台关闭,C#桌面程序阻止电脑进入睡眠或者休眠(1)

系统状态枚举变量

具体调用方法如下:

// 设置此线程此时开始一直将处于运行状态,此时计算机不应该进入睡眠状态。 // 此线程退出后,设置将失效。 // 如果需要恢复,请调用 <"RestoreForCurrentThread"/> 方法。 // <param name="keepDisplayOn"> // 表示是否应该同时保持屏幕不关闭。 // 对于游戏、视频和演示相关的任务需要保持屏幕不关闭;而对于后台服务、下载和监控等任务则不需要。 public static void PresentForCurrentThread(bool keepDisplayOn) { SetThreadExecutionState(keepDisplayOn ? (ExecutionState.Continues|ExecutionState.SystemRequired | ExecutionState.DisplayRequired) : (ExecutionState.Continues| ExecutionState.SystemRequired)); } //恢复此线程的运行状态,操作系统现在可以正常进入睡眠状态和关闭屏幕。 public static void RestoreForCurrentThread() { SetThreadExecutionState(ExecutionState.Continues); } // 重置系统睡眠或者关闭屏幕的计时器,这样系统睡眠或者屏幕能够继续持续工作设定的超时时间。 // <param name="keepDisplayOn"> // 表示是否应该同时保持屏幕不关闭。 // 对于游戏、视频和演示相关的任务需要保持屏幕不关闭;而对于后台服务、下载和监控等任务则不需要。 public static void ResetIdle(bool keepDisplayOn) { SetThreadExecutionState(keepDisplayOn ? (ExecutionState.SystemRequired | ExecutionState.DisplayRequired) : (ExecutionState.SystemRequired)); }

因此,只要调用ResetIdle(true)就可以实现屏幕常亮并且系统运行正常。如果要取消只要调用RestoreForCurrentThread()即可。

,
图文教程
相关文章
热门专题
推荐软件
奇热小说
奇热小说
下载
QQ2019手机版
QQ2019手机版
下载
王者荣耀
王者荣耀
下载
百度浏览器迷你版
百度浏览器迷你版
下载
2345浏览器手机版
2345浏览器手机版
下载
网易邮箱
网易邮箱
下载
爱奇艺
爱奇艺
下载
网易云音乐
网易云音乐
下载
WPSOffice
WPSOffice
下载
优酷
优酷
下载
谷歌浏览器(Chrome)
谷歌浏览器(Chrome)
下载
迅雷看看播放器
迅雷看看播放器
下载
UC浏览器
UC浏览器
下载
QQ音乐
QQ音乐
下载
阿里旺旺买家版v9.12.10C官方版
阿里旺旺买家版v9.12.10C官方版
下载
360安全卫士v12.1官方版
360安全卫士v12.1官方版
下载
猜你喜欢
启城聚光
启城聚光
下载
猫女奇缘中文版
猫女奇缘中文版
下载
街机模拟器Zincv1.01完美版
街机模拟器Zincv1.01完美版
下载
玩皮
玩皮
下载
五金总汇
五金总汇
下载
游戏开发物语国区版
游戏开发物语国区版
下载
fixrecovery43
fixrecovery43
下载
新坐标教育
新坐标教育
下载
蓝席
蓝席
下载
目标金银岛汉化补丁v1.01
目标金银岛汉化补丁v1.01
下载
钉钉自动打卡FreeDing
钉钉自动打卡FreeDing
下载
小易搜题电脑版
小易搜题电脑版
下载
悟空学成语电脑版
悟空学成语电脑版
下载
混乱之子iPhone版
混乱之子iPhone版
下载
绵绵英雄战斗
绵绵英雄战斗
下载
最终幻想勇气启示录国服
最终幻想勇气启示录国服
下载