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.Timer
和System.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表达式实现定时任务