C#中的Timer和DispatcherTimer使用实例
投稿:junjie
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();
您可能感兴趣的文章:
- C# WinForm-Timer控件的使用
 - c# 区分几种定时器(timer)
 - C#用timer实现背单词小程序
 - 详解C#中的System.Timers.Timer定时器的使用和定时自动清理内存应用
 - C#中Timer使用及解决重入问题
 - [C#].NET中几种Timer的使用实例
 - C#中自定义高精度Timer定时器的实例教程
 - 详解C#中的定时器Timer类及其垃圾回收机制
 - C#自定义基于控制台的Timer实例
 - C#中timer定时器用法实例
 - C#使用timer实现的简单闹钟程序
 - C#使用timer定时在屏幕上输出信息的方法
 - C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
 - c#各种Timer类的区别与用法介绍
 - C#中timer类的用法总结
 - C#中的三种定时计时器Timer用法介绍
 
