在.NET 的 Class library 中总共有三个Timer 类,分别是一下三个:
System.Windows.Form.Timer
System.Threading.Timer
System.Timers.Timer
System.Windows.Form.Timer 主要使用在WinForm的单线程环境中,它其实是调用的系统时钟,所有他并不是异步的,但是由于系统时钟的消息是要进入消息队列进行排队,所以不够精确。
System.Timers.Timer 是Server-based 时钟,运行在一个多线程的环境中,而实际上是在Threadpool 上另起的一个线程,所以它也不是异步的,但是更精确。
System.Threading.Timer 也运行在多线程环境中,其本身就是一种Threadpool的回调。
在实际使用中,推荐使用System.Timers.Timer
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Timer timer = new Timer();
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timer.Interval = 1000;
timer.Enabled = true;
while (Console.Read() != 'q')
{
};
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("hello world");
}
}
}