欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中的Timer和DispatcherTimer使用實(shí)例

 更新時間:2015年01月20日 10:17:31   投稿:junjie  
這篇文章主要介紹了C#中的Timer和DispatcherTimer使用實(shí)例,本文分別給出它們的使用代碼實(shí)例,需要的朋友可以參考下

Timer組件是基于服務(wù)器的計時器,通過設(shè)置時間間隔Interval,周期性的觸發(fā)Elapsed事件。

用法如下:

復(fù)制代碼 代碼如下:

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上。

用法如下:

復(fù)制代碼 代碼如下:

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。

用法

復(fù)制代碼 代碼如下:

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();

相關(guān)文章

最新評論