ThinkDev.Task

LoopTask和CronTask是ThinkDev.Task组件中最基本也是最重要的两大任务元素,目前组件也只实现了该两种模式的任务。
LoopTask:循环任务,支持间隔为毫秒级
CronTask:调度任务,支持秒,分,钟,天,月,周 6个级别设置。

LoopTask设置项:

属性 说明   默认值
TaskName 获取或设置该Task对象的个性化名称。 ""
IsRun 获取或设置该Task是否正常运行,如果为False,则不会真正执行。   false
Period 获取或设置该Task执行间隔,单位为毫秒。必须设置且必须大于0。 ""
DueTime 获取或设置该Task第一次延后执行间隔,单位为毫秒。不设置默认为当前时间的下一秒开始。 ""
BeginTime 获取或设置该Task最早执行时间 0000-00-00
EndTime 获取或设置该Task最后执行时间 9999-00-00
ClassName 获取或设置该Task自动调度的类及组件名,格式为:类完整限定名,组件名 ""
MethodName 获取或设置该Task自动调度的方法名,必须为静态无返回值,无参数函数 ""

CronTask设置项:

属性 说明   默认值
TaskName 获取或设置该Task对象的个性化名称。 ""
IsRun 获取或设置该Task是否正常运行,如果为False,则不会真正执行。   false
TimeExpress 获取或设置该Task调度表达式,基本模式仿自Linux中的CronTab语法,稍有变化 ""
ClassName 获取或设置该Task自动调度的类及组件名,格式为:类完整限定名,组件名 ""
MethodName 获取或设置该Task自动调度的方法名,必须为静态无返回值,无参数函数 ""

关于CronTask的TimeExpress 简单解释:
基本格式:* * * * * *(6列,以空格分隔)
f1:第1列表示秒0-59,每一秒用*或*/1 表示。
f2:第2列表示分钟0-59。 
f3:第3列表示小时0-23。 
f4:第4列表示日期1-31。 
f5:第5列表示月份1-12。 
f6:第6列表示星期几0-7,其中0和7均表示为周日。 

当f1为 * 时表示每秒都要执行任务,f2为 * 时表示每分钟都要执行程序,其余类推
当f1为 a-b 时表示从第 a 秒钟到第 b 秒钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 分钟都要执行,其余类推
当f1为 */n 时表示每 n 秒钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推
当f1为 a, b, c,... 时表示第 a, b, c,... 秒钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...分钟要执行,其余类推

示例:
#每天早上7点执行一次调度任务:
0 0 7 * * *
#在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次调度任务:
0 0 6-12/3 * 12 *
#周一到周五每天下午 5:00执行一次调度任务:
0 0 17 * * 1-5
#每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行一次调度任务
0 20 0-23/2 * * *
#每月每天的0 点 20 分, 9 点 20 分, 16 点 20 分执行一次调度任务 
0 20 0,9,16 * * * 

配置示例:

复制代码
<!-- 循环任务配置 -->
  <LoopTasks>
    <LoopTask TaskName="LoopTest" IsRun="true" Period="1000"  ClassName="ThinkDev.Task.WebTest.TaskTest, ThinkDev.Task.WebTest" MethodName="LoopTest"/>
  </LoopTasks>


  <!-- 调度任务配置 -->
  <CronTasks>
    <CronTask TaskName="CronTest" IsRun="true" TimeExpress="0 0 */2 * * *" ClassName="ThinkDev.Task.WebTest.TaskTest, ThinkDev.Task.WebTest" MethodName="CronTest"/>
  </CronTasks>
复制代码

表示配置了两个任务,一个循环任务,一个调度任务
其中,循环任务为每秒钟执行一次ThinkDev.Task.WebTest.TaskTest类的LoopTest方法,其中LoopTest方法必须为静态无参无返回值方法
其中,调度任务为每2小时执行一次ThinkDev.Task.WebTest.TaskTest类的CronTest 方法,其中CronTest 方法必须为静态无参无返回值方法

原文地址:https://www.cnblogs.com/zhanglixina/p/7763331.html