C#中的Timer和DispatcherTimer使用實(shí)例
Timer組件是基于服務(wù)器的計時器,通過設(shè)置時間間隔Interval,周期性的觸發(fā)Elapsed事件。
用法如下:
class Program {
static System.Timers.Timer Timer1 = new System.Timers.Timer();
static void Main() {
Timer1.Interval = 1000;
Timer1.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler);
Timer1.Start();
Console.ReadLine();
}
static void PeriodicTaskHandler(object sender, ElapsedEventArgs e) {
string str =Thread.CurrentThread.ManagedThreadId.ToString()+"##" +"Timer1" +"##" + e.SignalTime.ToLongTimeString();
Console.WriteLine(str);
}
}
DispatcherTimer:Dispatcher隊(duì)列中的計時器,不能保證正好在設(shè)置的時間間隔發(fā)生時執(zhí)行計時器,但能保證不會在時間間隔發(fā)生之前執(zhí)行計時器。這是因?yàn)?nbsp; DispatcherTimer的操作也是放置在Dispatcher隊(duì)列中的,何時執(zhí)行DispatcherTimer操作取決于隊(duì)列中其他作業(yè)及其優(yōu)先級。
在WPF應(yīng)用程序中
Timer的Elapsed事件綁定的方法沒有運(yùn)行在UI線程上,如果要訪問UI線程上的對象,需要利用Invoke或BeginInvoke 將操作發(fā)布到UI線程的Dispatcher上。
用法如下:
private void Button_Click(object sender, RoutedEventArgs e) {
Timer timer = new Timer();
timer.Interval = 1000;
timer.Start();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
}
void timer_Elapsed(object sender, ElapsedEventArgs e) {
i++;
this.Dispatcher.Invoke(new Action(() => {
test.Content = i.ToString();
}));
}
private int i = 0;
DispatcherTimer與Dispatcher都運(yùn)行于相同的線程,并且可以在DispatcherTimer上設(shè)置DispatcherPriority。
用法
private void Button_Click(object sender, RoutedEventArgs e) {
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
void timer_Tick(object sender, EventArgs e) {
i++;
Test.Content = i.ToString();
}
private int i = 0;
private DispatcherTimer timer = new DispatcherTimer();
- C# WinForm-Timer控件的使用
- c# 區(qū)分幾種定時器(timer)
- C#用timer實(shí)現(xiàn)背單詞小程序
- 詳解C#中的System.Timers.Timer定時器的使用和定時自動清理內(nèi)存應(yīng)用
- C#中Timer使用及解決重入問題
- [C#].NET中幾種Timer的使用實(shí)例
- C#中自定義高精度Timer定時器的實(shí)例教程
- 詳解C#中的定時器Timer類及其垃圾回收機(jī)制
- C#自定義基于控制臺的Timer實(shí)例
- C#中timer定時器用法實(shí)例
- C#使用timer實(shí)現(xiàn)的簡單鬧鐘程序
- C#使用timer定時在屏幕上輸出信息的方法
- C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
- c#各種Timer類的區(qū)別與用法介紹
- C#中timer類的用法總結(jié)
- C#中的三種定時計時器Timer用法介紹
相關(guān)文章
輕松學(xué)習(xí)C#的結(jié)構(gòu)和類
輕松學(xué)習(xí)C#的結(jié)構(gòu)和類,對C#的結(jié)構(gòu)和類感興趣的朋友可以參考本篇文章,幫助大家更靈活的運(yùn)用C#的結(jié)構(gòu)和類2015-11-11C#通過第三方組件生成二維碼(QR Code)和條形碼(Bar Code)
用C#如何生成二維碼,我們可以通過現(xiàn)有的第三方dll直接來實(shí)現(xiàn),下面列出幾種不同的生成方法2016-12-12C# LINQ查詢表達(dá)式及對應(yīng)LAMBDA表達(dá)式的用法
這篇文章主要介紹了C# LINQ查詢表達(dá)式及對應(yīng)LAMBDA表達(dá)式的用法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下2021-04-04HttpWebRequest出錯.Section=ResponseHeader Detail=CR
HttpWebRequest出錯.Section=ResponseHeader Detail=CR...2007-03-03C# OpenCvSharp利用白平衡技術(shù)實(shí)現(xiàn)圖像修復(fù)功能
這篇文章主要為大家詳細(xì)介紹了C# OpenCvSharp如何利用白平衡技術(shù)實(shí)現(xiàn)圖像修復(fù)功能,文中的示例代碼講解詳細(xì),希望對大家有一定的幫助2024-02-02解決C#中Linq GroupBy 和OrderBy失效的方法
最近發(fā)現(xiàn)了一個問題,在服務(wù)器端的Linq GroupBy 和OrderBy居然不管用,后來終于解決了所以現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。2016-09-09C# 中 TryParse如何將字符串轉(zhuǎn)換為特定類型
在 C# 中,TryParse 是一個用于將字符串轉(zhuǎn)換為特定類型的方法,它用于嘗試解析字符串并將其轉(zhuǎn)換為指定類型的值,而不會引發(fā)異常,這篇文章主要介紹了C# 中 TryParse 將字符串轉(zhuǎn)換為特定類型的方法,需要的朋友可以參考下2024-03-03