zoukankan      html  css  js  c++  java
  • Quartz.net笔记-简单触发器(Simple Trigger)

    触发器分为:简单触发器(Simple Trigger)、触发器(Cron Trigger),一个触发器只能绑定一个任务

    通用触发器属性:

    • JobKey – 当前触发器绑定任务的唯一标识符
    • StartTimeUtc – 触发器的生效开始时间
    • EndTimeUtc – 触发器的生效结束时间

    触发器优先级

    有些时候,你的程序中可能需要多个触发器,Quartz.NET的调度器可能在同一时间没有足够的资源来触发所有的触发器,这时候我们就需要给触发器设置优先级,让Quartz.NET帮助我们优先触发优先级高的触发器。
    在声明触发器的时候,可以使用WithPriority方法为触发器指定一个优先级权重,权重越高的,调度器会优先触发。

    简单触发器(Simple Trigger)

    如果你的项目需求是一下2种类型,可以使用Quartz.NET中的简单触发器。

    • 在某个时间点执行一次任务
    • 在某个时间点开始执行任务,并之后每隔固定的时间,再次执行当前任务

    立即执行一次就停止:

    ITrigger trigger = TriggerBuilder.Create()
                  .WithIdentity("firstTrigger", "group1")              
                  .StartNow()             
                  .Build();
    

    在某个时间点触发一次就停止:

    //该任务会在2017-07-12 15:30:00被执行
    ISimpleTrigger trigger3 = (ISimpleTrigger)TriggerBuilder.Create() 
        .WithIdentity("trigger3", "group1") 
        .StartAt(new DateTime(2017, 7, 12, 15, 30, 0)) 
    .Build();
    

    在某个时间点触发触发任务,并在之后每10分钟继续触发一次:

    //该任务会在2017-07-12 15:30:00被执行,然后每10分钟运行一次,永不停止
    ISimpleTrigger trigger4 = (ISimpleTrigger)TriggerBuilder.Create() 
        .WithIdentity("trigger4", "group1") 
        .StartAt(new DateTime(2017, 7, 12, 15, 30, 0)) 
        .WithSimpleSchedule(x => 
        { 
            x.WithIntervalInMinutes(10); 
            x.RepeatForever(); 
        }) 
        .ForJob("job1", "group1") 
    .Build();
    

    在某个时间点开始触发任务,并在之后每10分钟继续触发一次,触发10次,直到某个时间结束:

    //注意:会触发11次,因为一开始会运行1次
    ISimpleTrigger trigger5 = (ISimpleTrigger)TriggerBuilder.Create() 
        .WithIdentity("trigger5", "group1") 
        .StartAt(new DateTime(2017, 7, 12, 15, 30, 0)) 
        .WithSimpleSchedule(x => 
        { 
             x.WithIntervalInMinutes(10); 
             x.WithRepeatCount(10); 
        }) 
          .EndAt(DateBuilder.DateOf(22, 0, 0))
    .Build();
    

    从当前时间开始,一定时间之后,执行一次任务:

    //5分钟后触发
    ISimpleTrigger trigger6 = (ISimpleTrigger)TriggerBuilder.Create() 
        .WithIdentity("trigger6", "group1") 
        .StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute)) 
        .ForJob("job1", "group1") 
    .Build();
    

    参考:https://www.cnblogs.com/lwqlun/p/9095111.html

  • 相关阅读:
    【LibreOJ】#539. 「LibreOJ NOIP Round #1」旅游路线
    【LibreOJ】#541. 「LibreOJ NOIP Round #1」七曜圣贤
    【LibreOJ】#538. 「LibreOJ NOIP Round #1」数列递推
    【Atcoder】ARC084 Small Multiple
    【BZOJ】4430: [Nwerc2015]Guessing Camels赌骆驼
    【NOIP】提高组2013 火柴排队
    OpenCV常用基本处理函数(8)图像变换
    OpenCV常用基本处理函数(7)图像金字塔和直方图
    OpenCV常用基本处理函数(6)图像梯度
    OpenCV常用基本处理函数(5)图像模糊
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13687642.html
Copyright © 2011-2022 走看看