• .net中计时器Timer类


    计时器可以一种定时的方式异步的重复运行,这里简单的讲解举例一下System.Threading命名空间中的Timer类。

    参考文档:https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx

    • 计时器在固定的时间调用回调方法,回调方法必须是System.Threading.TimerCallback委托形式。他要求返回值必须为void并且接受衣蛾object类型作为参数。
    • 当计时器运行到设置的时间,系统会在线程池中的线程上开启一个回调方法,他提供一个state对象作为参数,然后开始运行。state:  一个包含回调方法要使用的信息的对象,可以为 null。
    • dueTime参数是回调方法callback首次被调用前的时间(以毫秒为单位)。dueTime设置为0,则callback回调函数立即被调用,如果设置为Timeout.Infinite,则计时器不会被开始。
    • period参数是调用回调方法callback的时间间隔(以毫秒为单位)。如果设置为Timeout.Infinite,首次调用之后可以禁用计时器。

    下面模拟计时网页下载的时间:

    using System;
    using System.Diagnostics;
    using System.Net;
    using System.Threading;
    
    namespace ConsoleApp.EX04
    {
        class Program
        {
            static int TimesCalled = 0;
            static void Display(object state)
            {
                Console.WriteLine("{0} 用时{1}s", (string)state, ++TimesCalled);
            }
            static void Main(string[] args)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                Timer timer = new Timer(Display, "正在下载网站", 1000, 1000);
                Console.WriteLine("Timer开始计时{0,4:N0}ms", watch.Elapsed.TotalMilliseconds);
                WebClient wc = new WebClient();
                var task = wc.DownloadStringTaskAsync("https://www.infoq.com/springnet/");
                task.Wait();
                if (task.IsCompleted)
                {
                    timer.Change(Timeout.Infinite, Timeout.Infinite);
                    Console.WriteLine("下载完成,耗时{0,4:N0}ms", watch.Elapsed.TotalMilliseconds);
                }
                Console.ReadKey();
            }
        }
    }

    运行的结果如下:

    Timer开始计时   1ms
    正在下载网站 用时1s
    正在下载网站 用时2s
    正在下载网站 用时3s
    正在下载网站 用时4s
    正在下载网站 用时5s
    正在下载网站 用时6s
    下载完成,耗时6,139ms

    .NET还提供其它的计时器类,以后有时间再说吧

  • 相关阅读:
    BZOJ 2733 永无乡
    【重温基础】13.迭代器和生成器
    【重温基础】13.迭代器和生成器
    【重温基础】12.使用对象
    【重温基础】12.使用对象
    【重温基础】11.Map和Set对象
    【重温基础】11.Map和Set对象
    【重温基础】10.数组
    【重温基础】10.数组
    【重温基础】9.正则表达式
  • 原文地址:https://www.cnblogs.com/hueychan/p/10575905.html
Copyright © 2020-2023  润新知