亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#各種Timer類的區別與用法介紹

2020-01-24 03:06:49
字體:
來源:轉載
供稿:網友

System.Threading.Timer 是一個簡單的輕量計時器,它使用回調方法并由線程池線程提供服務。在必須更新用戶界面的情況下,建議不要使用該計時器,因為它的回調不在用戶界面線程上發生。在此類情況下,System.Windows.Threading.DispatcherTimer 是更好的選擇,因為其事件是在用戶界面線程上引發的。
多線程計時器
1:System.Threading.Timer
2:System.Timers.Timer

特殊目的的單線程計時器:
1:System.Windows.Forms.Timer(Windows Forms Timer)
2:System.Windows.Threading.DispatcherTimer(WPF timer);

多線程計時器比較強大,精確,而且可擴展性強;
單線程計時器比較安全,對于更新 Windows Forms controls或者WPF這種簡單任務來說更方便。

復制代碼 代碼如下:

System.Threading.Timer是最簡單的多線程計時器。在下面的例子中,定時器在5秒后開始定時1秒的調用Tick方法。
publicstaticvoidMain()
{
//5秒后開始運行,接著每隔1秒的調用Tick方法
Timertmr=newTimer(Tick,"tick...",5000,1000);
Console.ReadLine();
tmr.Dispose();
}
staticvoidTick(objectdata)
{
Console.WriteLine(data);
}

.net framework提供的另一個計時器System.Timers.Timer.簡單的對System.Threading.Timer進行了包裝。增加了下面幾個特性。

實現了Component,所以可以在設計器顯示。代替Change方法的一個Interval屬性代替callback委托的一個Elapsed事件啟動和停止timer的Enabled屬性,默認是false。為了避免Enabled造成混亂,提供了Start和Stop方法。是否在每次指定的間隔結束時引發Elapsed時間,還是僅間隔第一次結束后運行的AutoReset屬性。在WPF或Windows Forms中安全的調用方法的SynchronizingObject對象。publicstaticvoidMainThread()

復制代碼 代碼如下:

{
Timertmr=newTimer();
tmr.Interval=500;
tmr.Elapsed+=newElapsedEventHandler(tmr_Elapsed);
tmr.Start();
Console.ReadLine();
tmr.Stop();
Console.ReadLine();
tmr.Start();
Console.ReadLine();
tmr.Dispose();
}

staticvoidtmr_Elapsed(objectsender,ElapsedEventArgse)
{
Console.WriteLine("Tick...");
}


單線程計時器:
1:System.Windows.Forms.Timer(Windows Forms Timer)
2:System.Windows.Threading.DispatcherTimer(WPF timer);

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

像System.Timers.Timer一樣,他們也提供了相同的成員(Interval,Tick,Start,Stop),但是他們內部的工作原理不同,
WPF和Windows Forms的計時器使用消息循環機制來取代線程池產生消息的機制。
這意味著Tick事件總是在創建timer的那個線程上執行,同時也意味著如果上一個Tick消息還未被處理,即使時間超過了間隔時間,在消息循環中也只存在一個Tick消息。

下面是它們的優點:
你可以忘記線程安全。一個Tick事件在前一個Tick事件被處理完畢前不會被觸發。你可以直接在Tick事件處理代碼中更新控件,不需要調用Control.Invoke或Dispatcher.Invoke.
看下在Winform中使用單線程定時器的效果:

復制代碼 代碼如下:

//基于Windows消息循環的單線程計時器
privateSystem.Windows.Forms.Timertimer=newTimer(){};

publicForm1()
{
InitializeComponent();

timer.Tick+=newEventHandler(timer_Tick);
timer.Enabled=true;
}

voidtimer_Tick(objectsender,EventArgse)
{
//模擬的做一些耗時的操作
System.Threading.Thread.Sleep(2000);
}


如果運行上面的代碼,會發現UI界面響應速度很慢,
原理上面已經介紹了:單線程計時器基于Windows消息循環,應用程序會同步的處理計時器的消息。
解決這個問題的方法是使用多線程計時器:只要修改代碼使用多線程計時器即可:
復制代碼 代碼如下:

//使用多線程計時器
privateSystem.Timers.Timertimer=newSystem.Timers.Timer();

publicForm1()
{
InitializeComponent();

timer.Elapsed+=newSystem.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Enabled=true;
}

voidtimer_Elapsed(objectsender,System.Timers.ElapsedEventArgse)
{
//模擬的做一些耗時的操作
System.Threading.Thread.Sleep(2000);
}


上面的例子告訴我們單線程計時器的缺點:
除非Tick事件的處理代碼執行的非常快,否則UI界面會變得響應很慢。
所以 WPF和Windows Forms的計時器都非常適合小任務,尤其是界面更新的任務。例如時鐘和計數顯示。否則,你需要一個多線程計時器。
設為1000,再設一個變量每次加1.加12次后做你要做的事,這樣就準了.

上面是2種自己使用一下,感覺那個好就可以了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合一区二区不卡| 亚洲人成在线播放| 亚洲欧美综合另类中字| 亚洲精品v欧美精品v日韩精品| 亚洲福利视频专区| 久久这里只有精品视频首页| 欧美巨猛xxxx猛交黑人97人| 4k岛国日韩精品**专区| 日韩av电影免费观看高清| 国产精品欧美日韩| 久久久www成人免费精品张筱雨| 亚洲美女av网站| 波霸ol色综合久久| www.色综合| 精品中文字幕视频| 欧美二区在线播放| 久久国产精品久久国产精品| 自拍偷拍亚洲一区| 最近2019好看的中文字幕免费| 欧美日韩高清区| 久久中文字幕视频| 日韩在线高清视频| 久久夜色精品国产| 97**国产露脸精品国产| 亚洲欧美一区二区三区在线| 国产精品老女人视频| 久久国内精品一国内精品| 成人黄色生活片| 国产欧美日韩免费看aⅴ视频| 91九色在线视频| 国产精品丝袜久久久久久高清| 欧美日韩中国免费专区在线看| 日韩免费高清在线观看| 亚洲美腿欧美激情另类| 日本伊人精品一区二区三区介绍| 亚洲国产又黄又爽女人高潮的| 久久成人亚洲精品| 97高清免费视频| 欧美另类极品videosbestfree| 精品中文字幕在线2019| 青青久久av北条麻妃黑人| 欧美精品18videosex性欧美| 国产视频久久久久久久| 伊人一区二区三区久久精品| 秋霞av国产精品一区| 欧美成人激情在线| 久久韩国免费视频| 都市激情亚洲色图| 亚洲黄在线观看| 亚洲色图激情小说| 91成人在线播放| 国模极品一区二区三区| 97碰碰碰免费色视频| 午夜欧美不卡精品aaaaa| 91产国在线观看动作片喷水| 热久久美女精品天天吊色| 中文字幕欧美日韩| 国产精品www色诱视频| 久久久久久久久91| 日韩电影中文 亚洲精品乱码| 黑人与娇小精品av专区| 日韩大胆人体377p| 亚洲成人精品视频在线观看| 欧美极品少妇xxxxⅹ喷水| 精品一区二区三区电影| 综合久久五月天| 国产精品久久二区| 一本一道久久a久久精品逆3p| 日韩av免费一区| 日韩成人av网| 国产精品视频免费在线观看| 欧美乱妇40p| 亚洲片在线资源| 国产成人亚洲综合91精品| 久久亚洲精品一区| 欧美日韩在线视频观看| 欧美壮男野外gaytube| 国产在线视频一区| 国产精品日韩欧美大师| 中国日韩欧美久久久久久久久| 国产精品吊钟奶在线| 亚洲肉体裸体xxxx137| 亚洲电影免费观看高清完整版在线| 久久精视频免费在线久久完整在线看| 成人久久久久爱| 国产精品久久久久久亚洲调教| 一区二区在线视频| 亚洲一级黄色av| 欧美最猛性xxxx| 91在线视频一区| 亚洲一区二区福利| 中文字幕一区二区三区电影| 日韩精品一区二区视频| 综合136福利视频在线| 国产精品高潮粉嫩av| 久久全国免费视频| 18一19gay欧美视频网站| 欧美又大又粗又长| 久久亚洲精品成人| 日韩av影片在线观看| 高清一区二区三区日本久| 国产精品欧美激情在线播放| 日韩资源在线观看| 日韩麻豆第一页| 黑人巨大精品欧美一区二区三区| 久久成人国产精品| 5252色成人免费视频| 黑人巨大精品欧美一区二区三区| 国产一区二区三区在线播放免费观看| 国产亚洲精品激情久久| 91产国在线观看动作片喷水| 俺去啦;欧美日韩| 国产精品福利无圣光在线一区| 国产精品999999| 亚洲国产另类久久精品| 欧美大肥婆大肥bbbbb| 欧美黑人性视频| 亚洲高清不卡av| 热久久美女精品天天吊色| 久久精品99久久久久久久久| 国产亚洲视频中文字幕视频| 欧美激情第99页| 精品magnet| 国产一区二区三区在线看| 国内精品小视频在线观看| 日韩在线欧美在线| 国产精品亚发布| 久久av在线播放| 2019国产精品自在线拍国产不卡| 川上优av一区二区线观看| 色哟哟亚洲精品一区二区| 欧美日韩国产精品一区| 欧美成人在线影院| 国产亚洲精品久久久久久牛牛| 亚洲女人天堂网| 成人精品在线视频| 中文字幕日韩在线播放| 欧美成人亚洲成人| 日韩中文字幕av| 国产精品一二三在线| 午夜精品福利电影| 九九综合九九综合| 精品欧美激情精品一区| 欧美人与性动交| 国产精品99久久久久久久久| 欧美精品videosex性欧美| 亚洲色图激情小说| 中文字幕精品网| 亚洲欧洲在线视频| 高清一区二区三区四区五区| 亚洲成人教育av| 国产亚洲人成网站在线观看| 一区二区欧美亚洲| 日韩av最新在线| 亚洲午夜未满十八勿入免费观看全集| 98精品国产高清在线xxxx天堂| 成人午夜一级二级三级| 一本色道久久综合狠狠躁篇的优点| 国产成人精品久久二区二区91| 精品久久久999| 日韩欧美在线视频日韩欧美在线视频| 欧美精品久久久久久久久久| 91色在线视频| 日韩欧美国产一区二区|