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秒再次运行。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值