中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

.NET Framework中定時器timer的單線程與多線程使用講解
來源:易賢網 閱讀:1462 次 日期:2016-08-09 15:05:02
溫馨提示:易賢網小編為您整理了“.NET Framework中定時器timer的單線程與多線程使用講解”,方便廣大網友查閱!

這篇文章主要介紹了Aspnetpager對GridView分頁并順利導出Excel的相關資料,需要的朋友可以參考下

如果你需要使用規律的時間間隔重復執行一些方法,最簡單的方式是使用定時器(timer)。與下邊的例子相比,定時器可以便捷、高效地使用內存和資源:

new Thread (delegate() {

             while (enabled)

             {

              DoSomeAction();

              Thread.Sleep (TimeSpan.FromHours (24));

             }

            }).Start();

這不僅僅會永久占用一個線程,而且如果沒有額外的代碼,DoSomeAction每天都會發生在更晚的時間。定時器解決了這些問題。

.NET Framework 提供了 4 種定時器。下邊兩個類是通用的多線程定時器:

(1)System.Threading.Timer

(2)System.Timers.Timer

另外兩個是專用的單線程定時器:

(3)System.Windows.Forms.Timer (Windows Forms 的定時器)

(4)System.Windows.Threading.DispatcherTimer (WPF 的定時器)

多線程定時器更加強大、精確并且更加靈活,而單線程定時器對于一些簡單的更新 Windows Forms 和 WPF 控件的任務來說是安全的,并且更加便捷。

1.多線程定時器Permalink

System.Threading.Timer是最簡單的多線程定時器:它僅僅有一個構造方法和兩個普通方法(取悅于極簡主義者,還有本書作者?。?。在接下來的例子中,一個定時器在 5 秒鐘之后調用Tick方法來打印 “ tick… “,之后每秒打印一次直到用戶按下回車鍵:

using System;

using System.Threading;

class Program

{

 static void Main()

 {

  // 首次間隔 5000ms,之后間隔 1000ms

  Timer tmr = new Timer (Tick, "tick...", 5000, 1000);

  Console.ReadLine();

  tmr.Dispose();     // 停止定時器并執行清理工作

 }

 static void Tick (object data)

 {

  // 這里運行在一個線程池線程上

  Console.WriteLine (data);     // 打印 "tick..."

 }

}

之后可以通過調用Change方法來改變定時器的時間間隔。如果你希望定時器只觸發一次,可以指定Timeout.Infinite作為構造方法的最后一個參數。

.NET Framework 在System.Timers命名空間下提供了另一個名字相同的定時器類。它只是封裝了 System.Threading.Timer,并在使用完全相同的底層引擎的前提下提供額外的便利。下面是增加功能的簡介:

(1)實現了Component,允許用于 Visual Studio 的設計器中。

(2)Interval屬性代替了Change方法。

(3)Elapsed事件代替了回調委托。

(4)Enabled屬性用于開始或停止定時器(默認值是false)。

(5)Start和Stop方法,避免對Enabled屬性感到困惑。

(6)AutoReset標識來指定是否為可重復的事件(默認為true)。

SynchronizingObject屬性提供Invoke和BeginInvoke方法,用于在 WPF 和 Windows Forms 控件上安全調用方法。

這有個例子:

using System;

using System.Timers;  // 命名空間是 Timers 而不是 Threading

class SystemTimer

{

 static void Main()

 {

  Timer tmr = new Timer();    // 無需任何參數

  tmr.Interval = 500;

  tmr.Elapsed += tmr_Elapsed;  // 使用事件代替委托

  tmr.Start();          // 開啟定時器

  Console.ReadLine();

  tmr.Stop();          // 停止定時器

  Console.ReadLine();

  tmr.Start();          // 重啟定時器

  Console.ReadLine();

  tmr.Dispose();         // 永久停止定時器

 }

 static void tmr_Elapsed (object sender, EventArgs e)

 {

  Console.WriteLine ("Tick");

 }

}

多線程定時器使用線程池來允許少量線程服務多個定時器。這意味著,回調方法或Elapsed事件每次可能會在不同的線程上觸發。此外,不論之前的Elapsed是否完成執行,Elapsed總是幾乎按時觸發。因此,回調方法或事件處理器必須是線程安全的。

多線程定時器的精度依賴于操作系統,通常是在 10-20 ms 的區間。如果需要更高的精度,你可以使用本地互操作(native interop)來調用 Windows 多媒體定時器,可以讓精度提升到 1 ms。它定義在 winmm.dll 中,首先調用timeBeginPeriod來通知操作系統你需要更高的定時器精度,然后調用timeSetEvent來啟動多媒體定時器。當使用完成后,調用timeKillEvent停止定時器,最后調用timeEndPeriod通知操作系統你不在需要更高的定時器精度了。可以通過搜索關鍵字 dllimport winmm.dll timesetevent 在網上找到完整的例子。

2.單線程定時器Permalink

.NET Framework 提供了兩個定時器,為消除WPF 和 Windows Forms 應用程序的線程安全問題而設計:

System.Windows.Threading.DispatcherTimer(WPF)

System.Windows.Forms.Timer(Windows Forms)

單線程定時器不是被設計成能在其特定的環境外工作的。例如,如果在 Windows 系統服務應用程序中使用 Windows Forms 定時器,Timer事件不會觸發!

它們暴露的成員都像System.Timers.Timer一樣(Interval、Tick、Start和Stop),并且用法也類似。但是不同之處在于其內部是如何工作的。它們不是使用線程池來產生定時器事件,WPF 和 Windows Forms 定時器依賴于 UI 模型的底層消息循環機制(message pumping mechanism)。意味著Tick事件總是在創建該定時器的那個線程觸發,在通常的程序中,它也就是管理所有 UI 元素和控件的那個線程。這有很多好處:

單線程計時器比較安全,對于更新 Windows Forms controls或者WPF這種簡單任務來說更方便。在WPF或Windows Forms中安全的調用方法的SynchronizingObject對象。

單線程計時器是被設計成屬于他們執行環境的計時器,如果你在一個Windows服務應用程序中使用Windows Forms的Timer,timer 事件并不會被觸發,只有在對應的環境下才會被觸發。

像System.Timers.Timer一樣,他們也提供了相同的成員(Interval,Tick,Start,Stop),但是他們內部的工作原理不同,WPF和Windows Forms的計時器使用消息循環機制來取代線程池產生消息的機制。

你可以不必考慮線程安全。

新的Tick在之前的Tick完成執行前不會觸發。

你可以直接在Tick時間事件的處理代碼中更新 UI 控件,而不需要調用Control.Invoke或Dispatcher.Invoke。

這聽起來好的難以置信,直到你意識到使用這些定時器的程序并不是真正的多線程,不會有并行執行。一個線程服務于所有定時器,并且還處理 UI 事件。這帶來了單線程定時器的缺點:

除非Tick事件處理器執行的很快,否則 UI 會失去響應。

這使得 WPF 和 Windows Forms 定時器僅適用于小任務,通常就是那些更新 UI 外觀的任務(例如,顯示時鐘或倒計時)。否則,你就需要多線程定時器。

在精度方面,單線程定時器與多線程定時器類似(幾十毫秒),但是通常精度更低,因為它們會被其它 UI 請求(或其它定時器事件)推遲。

單線程計時器基于Windows消息循環,應用程序會同步的處理計時器的消息。會發現UI界面相應速度比較慢。解決這個問題的方法是使用多線程計時器。

單線程計時器的缺點:除非Tick事件的處理代碼執行的非??欤駝tUI界面會變得響應很慢。所以 WPF和Windows Forms的計時器都非常適合小任務,尤其是界面更新的任務。例如時鐘和計數顯示。否則,你需要一個多線程計時器。

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
午夜一区不卡| 国产一区白浆| 亚洲精品乱码久久久久久久久| 韩日欧美一区二区三区| 亚洲国产精品嫩草影院| 亚洲午夜久久久久久尤物| 久久久欧美精品| 欧美激情免费观看| 国产无一区二区| 亚洲免费av片| 久久久久久一区二区三区| 欧美视频日韩视频在线观看| 精品99一区二区| 亚洲一区二区在线播放| 欧美一区二区三区男人的天堂| 免费在线亚洲| 国产三级欧美三级| 亚洲一二三区视频在线观看| 免费一级欧美片在线播放| 国产美女精品一区二区三区| 亚洲欧洲日韩在线| 久久久欧美精品sm网站| 国产乱码精品一区二区三区av | 国产亚洲一区二区三区在线播放| 亚洲国语精品自产拍在线观看| 午夜精品久久久久久久99樱桃| 欧美日韩免费高清一区色橹橹| 亚洲高清视频中文字幕| 久久久另类综合| 韩国av一区二区三区在线观看| 欧美一级二区| 国产亚洲aⅴaaaaaa毛片| 一区二区三区偷拍| 欧美四级在线观看| 亚洲影视九九影院在线观看| 国产精品国产三级国产专播精品人| 日韩手机在线导航| 欧美日韩精品一二三区| 亚洲视频欧美视频| 国产美女精品免费电影| 久久久久88色偷偷免费| 亚洲第一成人在线| 欧美精品成人在线| 中国日韩欧美久久久久久久久| 欧美三区不卡| 亚洲欧美日韩直播| 激情综合中文娱乐网| 久久久久久一区二区| 国产一区二区丝袜高跟鞋图片| 欧美一区二区三区免费在线看| 国产情侣久久| 免费人成精品欧美精品| 亚洲美女一区| 国产精品进线69影院| 久久av免费一区| 亚洲黄色在线| 国产精品女主播一区二区三区| 久久se精品一区二区| 伊伊综合在线| 国产精品九色蝌蚪自拍| 久久久久久**毛片大全| 99国产一区二区三精品乱码| 国产精品久久久久aaaa| 小黄鸭精品密入口导航| 亚洲成人自拍视频| 国产精品国产三级国产aⅴ入口| 久久黄色小说| 欧美在线国产精品| 影音先锋亚洲精品| 欧美天天影院| 免费影视亚洲| 欧美伊久线香蕉线新在线| 亚洲精品视频一区二区三区| 国产午夜精品一区二区三区欧美 | 欧美国产一区视频在线观看| 亚洲欧美视频在线观看视频| 在线观看日韩专区| 国产精品一区二区女厕厕| 欧美成人精品激情在线观看| 午夜在线一区| 在线综合欧美| 亚洲精选一区| 亚洲高清中文字幕| 黑人巨大精品欧美一区二区| 国产精品久久久久久久浪潮网站 | 欧美激情一区二区三区全黄| 亚洲欧美文学| 国产一区二区日韩精品| 老司机精品导航| 性欧美大战久久久久久久免费观看| 亚洲黄色高清| 国产一区二区三区在线观看免费| 欧美日韩免费精品| 欧美jizz19hd性欧美| 久久精品论坛| 欧美主播一区二区三区美女 久久精品人| 亚洲福利视频在线| 精品成人国产在线观看男人呻吟| 国产欧美精品一区| 国产精品久久久久久久久搜平片| 欧美成人高清视频| 欧美成人精品h版在线观看| 久久久久久久久岛国免费| 性久久久久久久| 午夜精品久久一牛影视| 午夜精品区一区二区三| 午夜精品999| 性欧美暴力猛交69hd| 亚洲夜晚福利在线观看| 亚洲一区二区免费| 亚洲欧美日韩直播| 欧美一级黄色网| 久久精品国产免费看久久精品| 久久福利一区| 久久亚洲一区二区| 欧美激情乱人伦| 欧美精品粉嫩高潮一区二区| 欧美日韩一区二区在线视频| 欧美另类专区| 国产乱码精品一区二区三区忘忧草 | 亚洲午夜一级| 亚洲女同同性videoxma| 欧美资源在线| 欧美刺激性大交免费视频 | 99视频热这里只有精品免费| 日韩视频不卡| 亚洲一区精彩视频| 亚洲欧美日韩一区二区三区在线| 亚洲在线一区二区| 久久久久99精品国产片| 欧美女同在线视频| 国产亚洲成年网址在线观看| 欲色影视综合吧| 久久婷婷成人综合色| 久热精品视频| 欧美日韩直播| 国产一区亚洲| 夜夜嗨av一区二区三区网站四季av | 久久久久久欧美| 欧美精品激情在线观看| 国产精品黄视频| 136国产福利精品导航| 亚洲最黄网站| 久久久精品一区| 欧美日韩激情网| 黄色一区二区三区四区| 宅男噜噜噜66国产日韩在线观看| 久久久精品国产免费观看同学| 欧美日韩国产成人在线91| 国内精品久久久久久| 亚洲天堂成人在线视频| 美女尤物久久精品| 国产一区二区三区久久悠悠色av| 亚洲精品国产精品乱码不99按摩| 午夜影院日韩| 欧美性大战久久久久久久| 亚洲电影免费| 久久久亚洲国产美女国产盗摄| 国产精品v亚洲精品v日韩精品 | 99国内精品| 久久蜜桃资源一区二区老牛| 国产精品久久久免费| 亚洲理伦电影| 欧美国产综合| 亚洲电影免费观看高清完整版在线| 亚洲欧美视频在线观看视频| 欧美日韩午夜在线视频| 亚洲日本一区二区| 欧美国产精品一区| 亚洲国产专区校园欧美| 欧美精品在线免费播放| 亚洲第一区色| 欧美成年人网站| 亚洲国产一区二区三区高清 | 一本大道av伊人久久综合| 久久久久久9| 狠狠色狠狠色综合日日小说| 久久激情五月丁香伊人| 国产亚洲网站| 久久视频在线视频| 亚洲高清一区二区三区| 欧美激情第二页| 亚洲精品美女久久7777777| 欧美激情片在线观看| 亚洲伦理精品| 欧美日韩一区二区视频在线观看| 日韩视频免费观看| 国产精品高潮呻吟久久| 午夜精品久久久久影视 | 欧美福利网址| 亚洲精品中文字幕女同| 欧美午夜一区二区福利视频| 亚洲欧美日韩一区二区三区在线| 国产欧美日韩激情| 久久伊人一区二区| 亚洲美女尤物影院| 国产欧美精品xxxx另类| 快射av在线播放一区| 亚洲精品在线观看免费| 国产精品久久91|