计时器可以一种定时的方式异步的重复运行,这里简单的讲解举例一下System.Threading命名空间中的Timer类。
参考文档:https://msdn.microsoft.com/zh-cn/library/system.threading.timer(v=vs.110).aspx
下面模拟计时网页下载的时间:
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还提供其它的计时器类,以后有时间再说吧