欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

C#中的Timer和DispatcherTimer使用实例

时间:2020-10-11 10:45:37|栏目:.NET代码|点击:

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渐变效果的方法

栏    目:.NET代码

下一篇:ASP.NET加密口令的方法实例

本文标题:C#中的Timer和DispatcherTimer使用实例

本文地址:http://www.codeinn.net/misctech/9775.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有