本文主要介绍.NET Core(C#) 中,使用System.Threading.Timer计时器实现定时任务的方法,以及相关的示例代码。

1、System.Threading.Timer、System.Windows.Forms.Timer和System.Timers.Timer区别

相关文档:

https://docs.microsoft.com/zh-tw/dotnet/api/system.windows.forms.timer?view=netcore-3.1

https://docs.microsoft.com/zh-tw/dotnet/api/system.timers.timer?view=netcore-3.1

https://docs.microsoft.com/zh-tw/dotnet/api/system.threading.timer?view=netcore-3.1

System.Windows.Forms.Timer是基于UI的

System.Timers.Timer是基于服务

System.Threading.Timer是基于线程

System.Timers.TimerSystem.Threading.Timer是多线程的,时间到了,就会执行,之前的任务没有执行完成也不影响,因为还会开个新线程继续执行新的任务。

System.Windows.Forms.Timer是单线程的,只有之前的任务执行完成了,才会执行下次任务,这样上一次任务处理超过时间,下一次任务执行就会延时执行。

2、System.Threading.Timer使用示例代码

Timer构造函数参数说明:

Callback:一个 TimerCallback 委托,表示要执行的方法。

State:一个包含回调方法要使用的信息的对象,或者为空引用。

dueTime:调用 callback 之前延迟的时间量(以毫秒为单位)。指定 Timeout.Infinite 以防止计时器开始计时。指定零 (0) 以立即启动计时器。

Period:调用 callback 的时间间隔(以毫秒为单位)。指定 Timeout.Infinite 可以禁用定期终止。

1)创建System.Threading.Timer实例

//Timeout.Infinite为-1,创建实例后,不执行计时器,如为0则立即执行
System.Threading.Timer threadTimer = new System.Threading.Timer(callback: new TimerCallback(TimerUp), null, Timeout.Infinite, 1000);

2)启动System.Threading.Timer实例

//1秒后执行一次,然后第5秒一次
threadTimer.Change(1000, 5000);

3)停止System.Threading.Timer实例

threadTimer.Change(-1, -1);
threadTimer.Dispose();

相关文档.NET Core Quartz使用cron表达式实现定时任务


推荐文档