日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c# timer使用

發布時間:2025/5/22 C# 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# timer使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C#里現在有3個Timer類:

  • System.Windows.Forms.Timer
  • System.Threading.Timer
  • System.Timers.Timer

這三個Timer我想大家對System.Windows.Forms.Timer已經很熟悉了,唯一我要說的就是這個Timer在激發Timer.Tick事件的時候,事件的處理函數是在程序主線程上執行的,所以在WinForm上面用這個Timer很方便,因為在From上的所有控件都是在程序主線程上創建的,那么在Tick的處理函數中可以對Form上的所有控件進行操作,不會造成WinForm控件的線程安全問題。

1、Timer運行的核心都是System.Threading.ThreadPool

? ?在這里要提到ThreadPool(線程池)是因為,System.Threading.Timer 和System.Timers.Timer運行的核心都是線程池,Timer每到間隔時間后就會激發響應事件,因此要申請線程來執行對應的響應函數,Timer將獲取線程的工作都交給了線程池來管理,每到一定的時間后它就去告訴線程池:“我現在激發了個事件要運行對應的響應函數,麻煩你給我向操作系統要個線程,申請交給你了,線程分配下來了你就運行我給你的響應函數,沒分配下來先讓響應函數在這兒排隊(操作系統線程等待隊列)”,消息已經傳遞給線程池了,Timer也就不管了,因為它還有其他的事要做(每隔一段時間它又要激發事件),至于提交的請求什么時候能夠得到滿足,要看線程池當前的狀態:

2、System.Threading.Timer

? 談完了線程池,就可以開始討論Timer,這里我們先從System.Threading.Timer開始,System.Threading.Timer的作用就是每到間隔時間后激發響應事件并執行相應函數,執行響應函數要向線程池申請線程,當然申請中會遇到一些情況在上面我們已經說了。值得注意的一點就是System.Threading.Timer在創建對象后立即開始執行,比如System.Threading.Timer timer = new System.Threading.Timer(Excute, null, 0, 10);這句執行完后每隔10毫秒就執行Excute函數不需要啟動什么的。

3、System.Timers.Timer

在上面的例子中我們看到System.Threading.Timer很不安全,即使在安全的方法類,也只能讓事件響應函數在80次后立刻退出讓其執行時間近似于0,但是還是浪費了系統不少的資源。

所以本人更推薦使用現在介紹的System.Timers.Timer,System.Timers.Timer大致原理和System.Threading.Timer差不多,唯一幾處不同的就是:

  • 構造函數不同,構造函數可以什么事情也不做,也可以傳入響應間隔時間:System.Timers.Timer timer = new System.Timers.Timer(10);
  • 響應事件的響應函數不在構造函數中設置:timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
  • 聲明System.Timers.Timer對象后他不會自動執行,需要調用?timer.Start()或者timer.Enabled = true來啟動它,?timer.Start()的內部原理還是設置timer.Enabled = true
  • 調用?timer.Stop()或者timer.Enabled = false來停止引發Elapsed事件,?timer.Stop()的內部原理還是設置timer.Enabled = false,最重要的是timer.Enabled = false后會取消線程池中當前等待隊列中剩余任務的執行。

所以我這里還是推薦大家使用System.Timers.Timer

學習路徑

?timer使用

轉載于:https://www.cnblogs.com/crhdyl/p/5038243.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的c# timer使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。