C# 定时器System.Threading.Timer
System.Threading.Timer类可以用来执行定时任务
例如每隔0.5s输出一些东西
public static void Main(string[] args)
{
Timer timer = new(callback: Callback, state: "张三", dueTime: 3000, period: 500);
void Callback(object state)
{
Console.WriteLine($"Hello {state}!");
}
Console.ReadLine();
}
这里对Timer的构造函数参数进行简单讲解
Timer(TimerCallback callback, object? state, int dueTime, int period)
Timer(TimerCallback callback, object? state, long dueTime, long period)
Timer(TimerCallback callback, object? state, TimeSpan dueTime, TimeSpan period)
Timer(TimerCallback callback, object? state, uint dueTime, uint period)
TimerCallback是一个委托,用于注册回调:
public delegate void TimerCallback(object? state)
state是委托参数,可为null
dueTime是延迟时间,用于指定延迟多少秒开始执行定时任务,设为0则表示立即执行
period是定时周期,用于指定每隔多长时间执行一次callback.invoke()方法
停止(销毁)定时器
使用Dispose()方法可停止(销毁)定时器,使回调不再被执行
例如将以上代码稍作修改,让定时任务执行一段时间停止执行:
public static void Main(string[] args)
{
Timer timer = new(callback: Callback, state: "张三", dueTime: 3000, period: 500);
void Callback(object state)
{
Console.WriteLine($"Hello {state}!");
}
Task.Run(() =>
{
Thread.Sleep(10000);
timer.Dispose();
});
Console.ReadLine();
}