精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

C#實現系統休眠或靜止休眠的方法


封裝類

用于阻止系統休眠的c#類。以下是代碼注釋的解釋:

  • dllimport("kernel32.dll"):定義了一個api函數,該函數在windows內核中定義。
  • enum executionflag : uint:定義了一個枚舉類型,其中包含三個標志,分別用于阻止系統休眠、關閉顯示器和繼續執行。
  • preventsleep(bool includedisplay = false):這個方法用于阻止系統休眠,直到線程結束恢復休眠。如果includedisplay參數為true,則還會阻止關閉顯示器。
  • resotresleep():這個方法用于恢復系統休眠。

使用了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,
     }
     ///       ///阻止系統休眠,直到線程結束恢復休眠
     ///       /// 是否阻止關閉顯示器
     public static void preventsleep(bool includedisplay = false)
     {
         if (includedisplay)
             setthreadexecutionstate(executionflag.system | executionflag.display | executionflag.continus);
         else
             setthreadexecutionstate(executionflag.system | executionflag.continus);
     }
     ///       ///恢復系統休眠
     ///       public static void resotresleep()
     {
         setthreadexecutionstate(executionflag.continus);
     }
     ///       ///重置系統休眠計時器
     ///       /// 是否阻止關閉顯示器
     public static void resetsleeptimer(bool includedisplay = false)
     {
         if (includedisplay)
             setthreadexecutionstate(executionflag.system | executionflag.display);
         else
             setthreadexecutionstate(executionflag.system);
     }
 }

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

  • 下載期間起計時器定期執行resetsleeptimer函數
  • 下載開始時執行preventsleep函數,下載結束后執行resotresleep函數。
  • 另外,和阻止系統休眠類似,有的程序還需要有阻止屏保功能。

 

相關文章