C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c#系统休眠

C#实现系统休眠或静止休眠的方法

作者:叫我少年

这篇文章主要介绍了C#实现系统休眠或静止休眠的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

封装类

用于阻止系统休眠的C#类。以下是代码注释的解释:

使用了kernel32.dll中的SetThreadExecutionState函数来阻止系统休眠。我们还定义了一个枚举类型ExecutionFlag,用于指定阻止系统休眠的选项。我们可以使用SetThreadExecutionState函数来设置ExecutionFlag标志,以防止系统休眠

class SystemSleepManagement
   {
       //定义API函数
       [DllImport("kernel32.dll")]
       static extern uint SetThreadExecutionState(ExecutionFlag flags);
       [Flags]
       enum ExecutionFlag : uint
       {
           System = 0x00000001,
           Display = 0x00000002,
           Continus = 0x80000000,
       }
       /// <summary>
       ///阻止系统休眠,直到线程结束恢复休眠
       /// </summary>
       /// <param name="includeDisplay">是否阻止关闭显示器</param>
       public static void PreventSleep(bool includeDisplay = false)
       {
           if (includeDisplay)
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display | ExecutionFlag.Continus);
           else
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Continus);
       }
       /// <summary>
       ///恢复系统休眠
       /// </summary>
       public static void ResotreSleep()
       {
           SetThreadExecutionState(ExecutionFlag.Continus);
       }
       /// <summary>
       ///重置系统休眠计时器
       /// </summary>
       /// <param name="includeDisplay">是否阻止关闭显示器</param>
       public static void ResetSleepTimer(bool includeDisplay = false)
       {
           if (includeDisplay)
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display);
           else
               SetThreadExecutionState(ExecutionFlag.System);
       }
   }

因此,要实现下载时阻止程序休眠,则有两种实现方式:

到此这篇关于C#实现系统休眠或静止休眠的文章就介绍到这了,更多相关c#系统休眠内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文