红鱼儿

kbmMW Scheduler的cron的用法

使用kbmMW Scheduler做定时任务,是一件非常爽的工作,看完下面的内容相信你也能同样爽!

什么是cron,参考 详解定时任务中的 cron 表达式

kbmMW Scheduler支持cron,可以按cron执行任务。看代码:

  KeepLiveScheduledEvent := Scheduler
                            .Schedule(procedure(const AScheduledEvent: IkbmMWScheduledEvent)
                                      begin

                                        ShowMsg('开始查询:'+FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));

                                        LocalDataModule.Check;

                                        ShowMsg('完成查询:'+FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));

                                      end)
                            .SynchronizedAfterRun(procedure(const AScheduledEvent: IkbmMWScheduledEvent)
                                                  begin
                                                    //
                                                  end)
                            .Cron('0 0 8 * * 1 *',TkbmMWScheduleCronMode.mwscmExtendedSecondAndYear)//每周一早上8点执行任务
                            .WhenException(procedure(const AScheduledEvent: IkbmMWScheduledEvent; const AException: Exception)
                                           begin
                                             ShowMsg('查询出错:' + AException.Message);
                                           end);

上面的代码,定义每周一早8点执行一个任务,并给用户发送通知短信。

这段代码,利用kbmMW Scheduler 框架,关于kbmMW Scheduler,可以参考我以前写的文章。

现在重点看一下Cron方法,原型如下:

     function Cron(const AString:string; const AMode:TkbmMWScheduleCronMode = mwscmExtendedYear):IkbmMWScheduledEvent;

第一个参数AString是cron表达式

第二个参数AMode决定cron表达式的格式。在例子代码中,AMode=TkbmMWScheduleCronMode.mwscmExtendedSecondAndYear,决定cron格式为7位,即:秒 分钟 小时 日 月份 周(星期) 年份,对于这种格式的cron定义,可利用在线cron设计器来设置。这样的话,你可以不懂cron的语法,也能轻松设计出你想要的cron表达式了。

https://qqe2.com/cron

对于cron方法,AMode默认值为TkbmMWScheduleCronMode.mwscmExtendedYear,决定cron格式为5位或者6位,5位时,含义为:分钟 小时 日 月份 周(星期),6位时,含义为:分钟 小时 日 月份 周(星期) 年份,比5位多了年份位。

现在可以看下TkbmMWScheduleCronMode枚举类型每个值的长度及含义:

类型 长度 含义
mwscmStandard 5 分钟 小时 日 月份 周(星期)
mwscmExtendedYear 5或6 分钟 小时 日 月份 周(星期) 年份
mwscmExtendedSecond 5或6 分钟 小时 日 月份 周(星期) 年份
mwscmExtendedSecondAndYear 5或7 秒 分钟 小时 日 月份 周(星期) 年份
mwscmExtendedMsecAndYear 5或8 毫秒 秒 分钟 小时 日 月份 周(星期) 年份

 

好了,现在我们就可以轻松的使用kbmMW Scheduler来做定时任务了!

补充,Scheduler还有两个属性:

     property CronString:string read GetCronString write SetCronString;//Cron串,设置时,同时调用Cron方法
     property CronMode:TkbmMWScheduleCronMode read GetCronMode write SetCronMode;//Cron 模式,不会调用Cron方法

通过这两个属性,可以取替直接调用Cron方法。其实,无所谓了,感觉kbmMW把问题搞复杂了!

 


 

posted on 2024-03-12 14:17  红鱼儿  阅读(286)  评论(0编辑  收藏  举报