国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中的Timer和DispatcherTimer使用實例

2019-10-29 21:43:32
字體:
供稿:網(wǎng)友
這篇文章主要介紹了C#中的Timer和DispatcherTimer使用實例,本文分別給出它們的使用代碼實例,需要的朋友可以參考下
 

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隊列中的計時器,不能保證正好在設(shè)置的時間間隔發(fā)生時執(zhí)行計時器,但能保證不會在時間間隔發(fā)生之前執(zhí)行計時器。這是因為  DispatcherTimer的操作也是放置在Dispatcher隊列中的,何時執(zhí)行DispatcherTimer操作取決于隊列中其他作業(yè)及其優(yōu)先級。

在WPF應(yīng)用程序中

Timer的Elapsed事件綁定的方法沒有運行在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都運行于相同的線程,并且可以在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();


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 来凤县| 襄城县| 荥阳市| 海兴县| 巴塘县| 永仁县| 佛山市| 北安市| 镇雄县| 兴安盟| 鹤峰县| 眉山市| 达尔| 开鲁县| 黄梅县| 曲水县| 巴楚县| 辉县市| 义马市| 南昌市| 涟水县| 凉城县| 浪卡子县| 甘泉县| 谷城县| 松潘县| 巴彦县| 乌兰察布市| 江永县| 乡宁县| 台南市| 巴中市| 沧州市| 廉江市| 宁陕县| 大同市| 饶河县| 古田县| 黄山市| 瑞昌市| 黑龙江省|