一、基本概念与使用
1、System.Threading.Timer是什么
System.Threading.Timer是用于在指定时间间隔内执行指定的代码的类。它是System.Threading.Timer类的实例化,能够让你在你的应用程序中创建一个可以持续运行,直到你不需要它为止的周期性线程。
2、Timer的使用方法
Timer的使用需要以下3个参数:
private static Timer _timer;
_timer = new Timer(TimerMethod, null, 0, 3000);
第一个参数是一个TimerCallback委托类型的方法,用于指定要执行的代码。第二个参数是一个object类型的参数,可选的,用于传递给指定的方法。第三个参数指定定时器的时间间隔,单位为毫秒。
在执行完以上代码后,Timer就会定期执行TimerMethod方法。
二、Timer的构造函数详解
1、TimerCallback委托
TimerCallback委托是指定在定时器触发时要执行的方法。它有一个object类型的参数,可选的,该参数就是指定的参数。
public delegate void TimerCallback(object state);
2、stateObject和waitTime
Timer构造函数的第二个参数是stateObject,它通常是null,如果你想指定stateObject,请使用构造函数的另一个重载来实现。第三个参数waitTime是指定定时器首次触发的时间间隔,单位为毫秒。
public Timer(TimerCallback callback, object state, int dueTime, int period);
3、dueTime和period
Timer的另一个重载构造函数需要指定dueTime和period参数,这个构造函数的意义是创建一个定时器,该定时器从当前时间开始计时,第一次到期时间是dueTime,以后每次的时间间隔是period。
public Timer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period);
三、Timer执行方法的实现方式
1、使用TimerCallback委托
private void TimerMethod(object state)
{
// 执行代码逻辑
}
2、使用Lambda表达式
_timer = new Timer(state => {
// 执行代码逻辑
}, null, 0, 3000);
3、使用匿名方法
_timer = new Timer(delegate (object state) {
// 执行代码逻辑
}, null, 0, 3000);
四、Timer取消与释放
1、取消Timer
当你想要停止定时器时,需要调用Cancel()方法。
_timer.Cancel()
2、释放Timer
释放Timer需要调用Dispose()方法。
_timer.Dispose()
五、Timer的常用应用场景
1、重复执行一个任务
定时器可用于重复执行一项任务。例如,定时器可用于每隔5秒自动更新应用程序中的所有数据。
2、计时器
定时器还可用于创建计时器。例如,当用户启动数字游戏时,定时器可用于记录游戏的时间。
3、轮询特定资源
使用定时器可实现轮询特定资源(如远程服务器是否可用),并在特定时间间隔内询问资源状态。
六、本文示例代码
这里为大家提供了一个简单的Timer示例代码,用于定期输出当前系统时间:
private static Timer _timer;
static void Main(string[] args)
{
Console.WriteLine("Timer Start!");
_timer = new Timer(TimerMethod, null, 0, 3000); //每隔3秒钟执行一次
Console.ReadLine();
}
private static void TimerMethod(object state)
{
Console.WriteLine("Current Time: {0}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}