国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 延边| 夏河县| 江西省| 拉萨市| 宁化县| 天气| 玉山县| 汽车| 佳木斯市| 灵川县| 遵义市| 垫江县| 射洪县| 广汉市| 公安县| 兰州市| 宁远县| 元氏县| 四川省| 英吉沙县| 云安县| 碌曲县| 高尔夫| 阿巴嘎旗| 丁青县| 德令哈市| 金坛市| 文成县| 珲春市| 都匀市| 水城县| 灌南县| 曲麻莱县| 洱源县| 即墨市| 同德县| 龙口市| 澄迈县| 赞皇县| 保德县| 巴林右旗|