欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現系統(tǒng)休眠或靜止休眠的方法

 更新時間:2023年05月22日 11:30:36   作者:叫我少年  
這篇文章主要介紹了C#實現系統(tǒng)休眠或靜止休眠的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

封裝類

用于阻止系統(tǒng)休眠的C#類。以下是代碼注釋的解釋:

  • DllImport("kernel32.dll"):定義了一個API函數,該函數在Windows內核中定義。
  • enum ExecutionFlag : uint:定義了一個枚舉類型,其中包含三個標志,分別用于阻止系統(tǒng)休眠、關閉顯示器和繼續(xù)執(zhí)行。
  • PreventSleep(bool includeDisplay = false):這個方法用于阻止系統(tǒng)休眠,直到線程結束恢復休眠。如果includeDisplay參數為true,則還會阻止關閉顯示器。
  • ResotreSleep():這個方法用于恢復系統(tǒng)休眠。

使用了kernel32.dll中的SetThreadExecutionState函數來阻止系統(tǒng)休眠。我們還定義了一個枚舉類型ExecutionFlag,用于指定阻止系統(tǒng)休眠的選項。我們可以使用SetThreadExecutionState函數來設置ExecutionFlag標志,以防止系統(tǒng)休眠

class SystemSleepManagement
   {
       //定義API函數
       [DllImport("kernel32.dll")]
       static extern uint SetThreadExecutionState(ExecutionFlag flags);
       [Flags]
       enum ExecutionFlag : uint
       {
           System = 0x00000001,
           Display = 0x00000002,
           Continus = 0x80000000,
       }
       /// <summary>
       ///阻止系統(tǒng)休眠,直到線程結束恢復休眠
       /// </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>
       ///恢復系統(tǒng)休眠
       /// </summary>
       public static void ResotreSleep()
       {
           SetThreadExecutionState(ExecutionFlag.Continus);
       }
       /// <summary>
       ///重置系統(tǒng)休眠計時器
       /// </summary>
       /// <param name="includeDisplay">是否阻止關閉顯示器</param>
       public static void ResetSleepTimer(bool includeDisplay = false)
       {
           if (includeDisplay)
               SetThreadExecutionState(ExecutionFlag.System | ExecutionFlag.Display);
           else
               SetThreadExecutionState(ExecutionFlag.System);
       }
   }

因此,要實現下載時阻止程序休眠,則有兩種實現方式:

  • 下載期間起計時器定期執(zhí)行ResetSleepTimer函數
  • 下載開始時執(zhí)行PreventSleep函數,下載結束后執(zhí)行ResotreSleep函數。
  • 另外,和阻止系統(tǒng)休眠類似,有的程序還需要有阻止屏保功能。

到此這篇關于C#實現系統(tǒng)休眠或靜止休眠的文章就介紹到這了,更多相關c#系統(tǒng)休眠內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • c# 生成二維碼的示例

    c# 生成二維碼的示例

    這篇文章主要介紹了c# 生成二維碼的示例,幫助大家更好的理解和使用c#編程語言,感興趣的朋友可以了解下
    2020-11-11
  • C# 導出Excel的6種簡單方法實現

    C# 導出Excel的6種簡單方法實現

    C# 導出 Excel 的6種簡單方法:數據表導出到 Excel,對象集合導出到 Excel,數據庫導出到 Excel,微軟網格控件導出到 Excel,數組導出到 Excel,CSV 導出到 Excel,你都會了嗎?需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • C# TcpClient網絡編程傳輸文件的示例

    C# TcpClient網絡編程傳輸文件的示例

    這篇文章主要介紹了C# TcpClient網絡編程傳輸文件的示例,幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-04-04
  • Unity腳本自動添加頭部注釋的全過程

    Unity腳本自動添加頭部注釋的全過程

    在一些公司需要代碼嚴格的管理,有時候會需要用到每個腳本的頭部做一些介紹,所以下面這篇文章主要給大家介紹了關于Unity腳本自動添加頭部注釋的相關資料,需要的朋友可以參考下
    2022-01-01
  • C#創(chuàng)建磁性窗體的實現方法

    C#創(chuàng)建磁性窗體的實現方法

    經常會遇到一種情況,即當拖動一個窗體(主窗體)時,其他窗體(子窗體)隨著該窗體移動,當拖動子窗體時,其他窗體將不跟隨移動,這就是磁性窗體,所以本文給大家介紹了C#創(chuàng)建磁性窗體的實現方法,需要的朋友可以參考下
    2024-04-04
  • c#中設置快捷鍵

    c#中設置快捷鍵

    c#中設置快捷鍵...
    2007-03-03
  • C#實現winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    C#實現winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法

    這篇文章主要介紹了C#實現winform用子窗體刷新父窗體及子窗體改變父窗體控件值的方法,涉及C#窗體交互的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C# ManualResetEvent使用方法詳解

    C# ManualResetEvent使用方法詳解

    這篇文章主要為大家詳細介紹了ManualResetEvent使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • C#三種判斷數據庫中取出的字段值是否為空(NULL) 的方法

    C#三種判斷數據庫中取出的字段值是否為空(NULL) 的方法

    最近操作數據庫,需要判斷返回的字段值是否為空,在網上收集了3種方法供大家參考
    2013-04-04
  • 淺談Unity腳本生命周期與執(zhí)行順序

    淺談Unity腳本生命周期與執(zhí)行順序

    在Unity中,腳本可以理解為附加在游戲對象上的用于定義游戲對象行為的指令代碼。必須綁定在游戲對象上才能開始它的生命周期。游戲對象可以理解為能容納各種組件的容器,游戲對象的所有組件一起決定了這個對象的行為和游戲中的表現
    2021-06-06

最新評論