程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中的Timer和DispatcherTimer應用實例

C#中的Timer和DispatcherTimer應用實例

編輯:C#入門知識

C#中的Timer和DispatcherTimer應用實例。本站提示廣大學習愛好者:(C#中的Timer和DispatcherTimer應用實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中的Timer和DispatcherTimer應用實例正文


Timer組件是基於辦事器的計時器,經由過程設置時光距離Interval,周期性的觸發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隊列中的計時器,不克不及包管正好在設置的時光距離產生時履行計時器,但能包管不會在時光距離產生之前履行計時器。這是由於  DispatcherTimer的操作也是放置在Dispatcher隊列中的,什麼時候履行DispatcherTimer操作取決於隊列中其他功課及其優先級。

在WPF運用法式中

Timer的Elapsed事宜綁定的辦法沒有運轉在UI線程上,假如要拜訪UI線程上的對象,須要應用Invoke或BeginInvoke 將操作宣布到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上設置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();

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved