在.net的框架下,使用System.Threading命名空间里的Timer类可以很容易构建一个定时器,代码如下:
TaskInfo ti=new TaskInfo() ;
//创建Timer对象,将一个回调函数传给它,每隔一秒调用一次
Timer tm = new Timer(ShowTime, ti , 0, 1000);
其中ShowTime是回调函数,ti是自定义的一个类包含了回调方法使用的信息,即回调函数的参数。
//用于向回调函数提供参数信息
class TaskInfo
{
public int count = 0;
}
//被回调的函数
static void ShowTime(Object ti)
{
TaskInfo obj = ti as TaskInfo;
obj.count++;
System.Console.WriteLine("({0}){1}", obj.count, DateTime.Now);
}
这样定时器就创建完成了,每隔一秒执行一次回调函数。
注意,定时器的线程和主线程不是同一个线程,也就是说这个定时器是多线程的。不会由于主线程的阻塞而造成定时器时间不准。