计时器

Csharp中的计时器也是采用异步委托回调模式的方式。
1、计时器每次到了时间调用回调函数,回调函数必须是TimerCallback委托形式。object 类型作为参数,返回Viod.
void TimerCallback(object state)
2、当计时器到了时间以后,系统会从线程池中线程开启一个回调方法。提供state对象作为其参数。
3、Timer 参数
dutTime 是回调方法首次调用之前的时间,例如2000,就是等2s后进行首次调用。当设置为Infinite 则不调用,设置为0 则立马调用。
Period两次成功调用回调函数之间的时间间隔。如果设置为Timeout.infinite则首次调用之后便不在调用。
state 可以为NULL,每次执行回调方法时要传入对象的引用。
Timer 类构造函数接受 回调方法的名称,dutTime,perTime,state作为参数,Timer有很多构造函数,其中常用的如下
Timer(TimerCallback callback,object state, uint dutTime,uint perTime)
一旦创建了Timer,可以使用change方法来改变启动时间dutTime,perTime.
案例如下:

        static void Main(string [] args)
        {
            Program p = new Program();
            Timer T = new Timer(p.Displayed, "process timer event", 5000, 1000);
            Console.WriteLine("Timer Start");
            while(p.TimesCalled<10)
            {               
            }
            T.Change(1000, 10000);//这里时重新启动1s后调用回调方法。间隔10s后循环调用。
            Console.ReadLine();
        }
        int TimesCalled = 0;
        void Displayed(object state)
        {
        Console.WriteLine("{0},{1}", (string)state, ++TimesCalled);
    }

结果

posted @ 2022-02-19 15:32  跨界专家  阅读(128)  评论(0)    收藏  举报