C#多线程编程笔记(3.4)-使用Timer计时器

近来在学习Eugene Agafonov编写的《C#多线程编程实战》(译),做些笔记也顺便分享一下^-^

using System;
using System.Threading;

namespace 使用计时器
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Press 'Enter' to stop the timer...");
            DateTime start = DateTime.Now;
            _timer = new Timer(_ => TimerOperation(start), null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(2));

            Thread.Sleep(TimeSpan.FromSeconds(6));

            _timer.Change(TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(4));

            Console.ReadLine();

            _timer.Dispose();

            Console.ReadKey();
        }

        static Timer _timer;

        static void TimerOperation(DateTime start)
        {
            TimeSpan elapsed = DateTime.Now - start;
            Console.WriteLine("{0} seconds from {1}.Timer thread pool thread id:{2}", elapsed.Seconds, start, Thread.CurrentThread.ManagedThreadId);
        }
    }
}

程序的运行结果如下:


我们首先创建了一个Timer实例。第一个参数是一个lambda表达式,将会在线程池中被执行。我们调用TimerOperation方法并给其提供一个起始时间。由于无须使用用户状态对象,所以第二个参数为null。然后指定了什么时候会第一次运行TimerOperation,以及之后再次调用的间隔时间。所以第一个值实际上说明一秒会启动第一次操作,然后每隔两秒再次运行。

之后等待6秒后修改计时器。在调用_timer.Change方法一秒后启动TimerOperation,然后每隔4秒再次运行。

最后等待回车键被按下以结束整个应用程序。在程序运行过程中可以看到自从程序启动后经历的时间。

猜你喜欢

转载自blog.csdn.net/qq_35445058/article/details/80780791