• Quartz.net官方开发指南 第五课: SimpleTrigger


    如果需要让任务只在某个时刻执行一次,或者,在某个时刻开始,然后按照某个时间间隔重复执行,简单地说,如果你想让触发器在20078月20日上112354秒执行,然后每个隔10秒钟重复执行一次,并且这样重复5次。那么SimpleTrigger 就可以满足你的要求。

    通过这样的描述,你可能很惊奇地发现SimpleTrigger包括这些属性:开始时间,结束时间,重复次数,重复间隔。所有这属性都是你期望它所应具备的,只有end-time属性有一些条目与之关联。

    重复次数可能是0,正数或者一个常量值SimpleTrigger.REPEAT_INDEFINITELY。重复间隔时间属性可能是0,正的long型,这个数字以毫秒为单位。注意:如果指定的重复间隔时间是0,那么会导致触发器按照重复数量定义的次数并发触发(或者接近并发)。

    Quartz.TriggerUtils类对处理这样的循环也提供了很多支持。

    EndTime(如果这个属性被设置)属性会覆盖重复次数属性,这对创建一个每隔10秒就触发一次直到某个时间结束的触发器非常有用,这就可以不计算开始时间和结束时间之间的重复数量。也可以指定一个结束时间,然后使用REPEAT_INDEFINITELY作为重复数量。(甚至可以指定一个大于结束时间之前实际重复次数的整数作为重复次数)。一句话,EndTime属性控制权高于重复次数属性。
       
        SimpleTrigger有几个不同的构造函数,下面我们来看看这结果构造函数:

    One of SimpleTrigger's Constructors

    public SimpleTrigger(string name, 
                           string group, 
                           DateTime startTime,
                           NullableDateTime endTime endTime, 
                           int repeatCount, 
                           long repeatInterval)

    SimpleTrigger Example 1 - Create a trigger that fires exactly once, ten seconds from now

    SimpleTrigger trigger = new SimpleTrigger("myTrigger",
                                              
    null
    ,
                                              DateTime.Now.AddSeconds(
    10
    ),
                                              
    null
    ,
                                              
    0
    ,
                                              0L)
    ;

    SimpleTrigger Example 2 - Create a trigger that fires immediately, then repeats every 60 seconds, forever

    SimpleTrigger trigger2 = new SimpleTrigger("myTrigger",
                                    
    null
    ,
                                    DateTime.Now,
                                    
    null
    ,
                                    SimpleTrigger.REPEAT_INDEFINITELY,
                                    
    60 1000);

    SimpleTrigger Example 3 - Create a trigger that fires immediately, then repeats every 10 seconds until 40 seconds from now

    SimpleTrigger trigger = new SimpleTrigger("myTrigger",
                                              "myGroup",
                                              DateTime.Now,
                                              DateTime.Now.AddSeconds(40),
                                              SimpleTrigger.REPEAT_INDEFINITELY,
                                              10 * 1000);

        
    SimpleTrigger Misfire Instructions
    ——SimpleTrigger的未触发指令

    未触发发生时,SimpleTrigger有几个指令可以用来通知Quartz进行相关处理。(未触发在上节课中介绍过了)。这些指令以常量形式定义在SimpleTrigger本身,这些指令如下:

    Misfire Instruction Constants of SimpleTrigger

    MISFIRE_INSTRUCTION_FIRE_NOW

    MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT

    MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT

    MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT

    MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT

    回顾前面的课程你可以知道,每个触发器都有一个Trigger.MISFIRE_INSTRUCTION_SMART_POLICY指令可用,并且,这个指令对于每个类型的触发器都是缺省的。

    欢迎大家扫描下面二维码成为我的客户,为你服务和上云

  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    An existing connection was forcibly closed by the remote host
    各种浏览器的兼容css
    vs输出窗口,显示build的时间
    sass
    网站设置404错误页
    List of content management systems
    css footer not displaying at the bottom of the page
    强制刷新css
    sp_executesql invalid object name
  • 原文地址:https://www.cnblogs.com/shanyou/p/861940.html
Copyright © 2020-2023  润新知