• Quartz.NET学习笔记(四) 计划任务触发器


    通常来说计划任务触发器会比简单触发器的使用频率高很多。如果你的任务是需要基于日历每天定时运行,那你就应该使用计划任务触发器,例如每周五中午12:00执行任务,或者每天早上9点执行任务。

    计划任务表达式(Cron Expressions)

    计划任务需要使用计划任务表达式(Cron Expressions)来定义。计划任务表达式是一个字符串,它又7个子字符串组合而成,这7个子字符串有空格符间隔,分别表示计划任务触发时间的7个部分

    第一位 –  触发时间的秒数

    第二位 –  触发时间的分钟数

    第三位 –  触发时间的小时数

    第四位 –  触发日期是一个月中的哪几天

    第五位 –  触发月份是哪几个月

    第六位 –  触发日期是一周当中的哪些天(周一 – 周日)

    第七位 –  触发的年份(可选参数), 用的比较少

    例如:
     0 0 12 ? * WED

    表示每周三中午12:00执行一次任务

    计划任务表达式的7位子字符串,每一位都可以使用范围表达式或者指定值

     

    可选值

    第一位

    0-59

    第二位

    0-59

    第三位

    0-23

    第四位

    0-31

    第五位

    JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV,DEC或者0-11

    第六位

    SUN, MON, TUE, WED, THU, FRI, SAT或者1-7, 1表示周日。这里也可以使用范围, 例:”MON-FRI”, “MON-WED, SAT”

     

    通配符

    计划任务表达式中可以使用通配符

    通配符

     

    *

    所有可选值

    ?

    表明没有特定值,只能用于第四位(day of month)和第六位(day of week)

    /

    增量,例如分钟位字符串0/15,表示从0开始,每15分钟触发一次,即每当分钟数为0,15,30,45时候触发任务

    L

    只能用于第四位(day of month)和第六位(day of week)

    ·         L单独使用在第四位,表示指定月份的最后一天

    ·         L 单独使用在第六位,表示周六

    ·         L 使用在第四位,但是前面有指定数字,表示指定月份的倒数第几天,例如6L, 就是指定月份的倒数第6天

    ·         L使用在第六位,但是前面有指定数字,表示指定月份的最后一个周几,例如FRIL, 表示指定月份最后一个周五

    W

    只能用于第五位, W在这里的意思就是取指定月份离指定之天最近的Weekday(Mon-Fri), 例如15W, 表示离指定月份第15天最近的非周末日期

    #

    只能用于第六位,表示指定月份的第几个星期的某天,例如6#3, 或者FRI#3都是表示指定月份的第三个周五

    一些表达式的例子

    "0 0/5 * * * ?"

    每5分钟运行一次任务,永不停止,除非触发器指定了EndAt

    "10 0/5 * * * ?"

    每5分钟又10秒,运行一次任务,永不停止,除非触发器指定了EndAt

    "0 30 10-13 ? * WED,FRI"

    每周周三周五,10:30, 11:30, 12:30, 13:30各运行4次任务,永不停止,除非触发器指定了EndAt

    "0 0/30 8-9 5,20 * ?"

    每个月的5号,20号,上午8:00,8:30, 9:00, 9:30各运行4次任务,永不停止,除非触发器指定了EndAt

     

    使用代码创建计划任务触发器

    使用TriggerBuilder的WithCronSchedule方法,可以很容易的生成一个计划任务触发器

    例:

    TriggerBuilder.Create()
    
        .WithIdentity("trigger3", "group1")
    
        .WithCronSchedule("0 0/2 8-17 * * ?")
    
        .ForJob("myJob", "group1")
    
        .Build();
  • 相关阅读:
    VS code常用的几个插件
    vue项目,ie11 浏览器报 Promise 未定义的错误
    npm 安装卸载模块
    System.Reflection.MethodBody.cs
    System.RuntimeMethodHandle.cs
    System.Reflection.MethodBase.cs
    System.Runtime.Serialization.IDeserialezationCallback.cs
    System.Globalization.CompareOptions.cs
    System.Globalization.CompareInfo.cs
    System.Globalization.TextInfo.cs
  • 原文地址:https://www.cnblogs.com/lwqlun/p/9095112.html
Copyright © 2020-2023  润新知