动态的排除一些触发器的时间。

DailyCalendar-天日历

定义:

This implementation of the Calendar excludes (or includes - see below) a specified time range each day.

排除 天  内的一个时间段。或者叫做 在天上做减法操作。

 

private async void button8_Click_1(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build(); //某一天的时间段上做减法操作。
DailyCalendar dailyCa = new DailyCalendar(DateBuilder.DateOf(, , ).DateTime, DateBuilder.DateOf(, , ).DateTime);
await schdeler.AddCalendar("ceshica", dailyCa,true,true); //ModifiedByCalendar 减去时间段
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger);
}
WeeklyCalendar-周日历

定义:

This implementation of the Calendar excludes a set of days of the week. You may use it to exclude weekends for example. But you may define any day of the week. By default it excludes Saturday and Sunday.

该日历的实现不包括一组星期的天数。你可以用它来排除周末。但是你可以定义一周中的任何一天。默认情况下,它不包括周六和周日。

private async void button9_Click(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build(); //一周内 某些天数做减法。 默认周六周日是排除的。
WeeklyCalendar weekCa = new WeeklyCalendar(); weekCa.SetDayExcluded(DayOfWeek.Friday, true); await schdeler.AddCalendar("ceshica", weekCa, true, true); //ModifiedByCalendar 减去周内的 几天
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger);
}
HolidayCalendar-假期日历

定义:

This implementation of the Calendar stores a list of holidays (full days that are excluded from scheduling).

该日历的实现存储了一个假日列表(被排除在调度之外的完整天数)。

适合用在某一天  假期等,或者当年的某一天不能执行。

private async void button10_Click(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build(); //制定某一天不能执行。 这个更加倾向于 holiday 假期。一般工作通过工作日历表中找出所有的假期,然后放入holidaycalendar。
HolidayCalendar holidayCa = new HolidayCalendar();
holidayCa.AddExcludedDate(DateTime.Now);//排除今天。
//holidayCa.RemoveExcludedDate(DateTime.Now);//后期可以动态处理
await schdeler.AddCalendar("ceshica", holidayCa, true, true); //ModifiedByCalendar 减去周内的 几天
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger);
}
MonthlyCalendar-月日历

定义:

This implementation of the Calendar excludes a set of days of the month. You may use it to exclude every 1. of each month for example. But you may define any day of a month.

这个日历的实现不包括一个月的天数。你可以用它来排除每个月一号。但是你也可以定义一个月的任何一天。

private async void button11_Click(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build(); MonthlyCalendar monthlyCa = new MonthlyCalendar();
//月份中的某一天不能被执行。
monthlyCa.SetDayExcluded(, true); await schdeler.AddCalendar("ceshica", monthlyCa, true, true); //ModifiedByCalendar 减去周内的 几天
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger); }
AnnualCalendar-年日历

定义:

This implementation of the Calendar excludes a set of days of the year. You may use it to exclude bank holidays which are on the same date every year.

该日历的实现不包括一组年份。你可以用它来排除每年同一日期的银行假日。  适合每年的每一天不能执行  比如说国庆节  不干活。

private async void button12_Click(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build() AnnualCalendar annualCa = new AnnualCalendar();
//每年这几天不执行
annualCa.SetDayExcluded(new DateTime(, , ), true);
annualCa.SetDayExcluded(new DateTime(, , ), true);
annualCa.SetDayExcluded(new DateTime(, , ), true);
annualCa.SetDayExcluded(new DateTime(, ,), true);
annualCa.SetDayExcluded(new DateTime(, , ), true);
annualCa.SetDayExcluded(new DateTime(, , ), true);
annualCa.SetDayExcluded(new DateTime(, , ), true); annualCa.SetDayExcluded(new DateTime(, , ), true); await schdeler.AddCalendar("ceshica", annualCa, true, true); //ModifiedByCalendar
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger);
}
CronCalendar-Cron日历

定义:

This implementation of the Calendar excludes the set of times expressed by a given CronExpression.

该日历的实现不包括给定的CronExpression所表示的时间集合。  也就是排除cron时间。

private async void button13_Click(object sender, EventArgs e)
{
ISchedulerFactory sf = new StdSchedulerFactory();
var schdeler = await sf.GetScheduler();
await schedu.Start();
IJobDetail job = JobBuilder.Create<MyJob5>().WithDescription("JOB5").StoreDurably(true).Build(); CronCalendar cronCa = new CronCalendar("1,5,10,15,20,25,30,35,40,45,50,55 * * * * ?"); await schdeler.AddCalendar("ceshica", cronCa, true, true); //ModifiedByCalendar
ITrigger trigger = TriggerBuilder.Create().WithCronSchedule("* * * * * ?").ModifiedByCalendar("ceshica").Build(); await schedu.ScheduleJob(job, trigger);
}

Quartz.Net—Calendar的更多相关文章

  1. Quartz Scheduler Calendar日历的使用

    Quartz Calendar 日历的使用 quartz引擎为我们提供了日历的功能,让我们可以自己定义一个时间段,可以控制触发器在这个时间段内触发或者不触发,比如可以设置节假日,工作时间早8晚5等等. ...

  2. Quartz任务调度基本使用

    转自:http://www.cnblogs.com/bingoidea/archive/2009/08/05/1539656.html 上一篇:定时器的实现.Java定时器Timer和Quartz介绍 ...

  3. Quartz 入门详解

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  4. 使用Quartz.NET进行任务调度管理

    1.Quartz.NET 介绍 Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用 ...

  5. Quartz.NET开源作业调度框架系列(三):IJobExecutionContext 参数传递

    前面写了关于Quartz.NET开源作业调度框架的入门和Cron Trigger , 这次继续这个系列, 这次想讨论一下Quartz.NET中的Job如何通过执行上下文(Execution Conte ...

  6. Quartz集群

    为什么选择Quartz: 1)资历够老,创立于1998年,比struts1还早,但是一直在更新(27 April 2012: Quartz 2.1.5 Released),文档齐全. 2)完全由Jav ...

  7. Quartz任务调度快速入门(转)

    转自http://www.blogjava.net/baoyaer/articles/155645.html 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调 ...

  8. Quartz将Job保存在数据库中所需表的说明

    http://blog.iqbon.com/doc/364.html   (将Quartz持久化到数据库的做法)   QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calen ...

  9. 用Quartz进行作业调度(转)

    概述 各种企业应用几乎都会碰到任务调度的需求,就拿论坛来说:每隔半个小时生成精华文章的RSS文件,每天凌晨统计论坛用户的积分排名,每隔30分钟执行锁定用户解锁任务. 对于一个典型的MIS系统来说,在每 ...

随机推荐

  1. UDF-C_UDMI【转载】

    UDF定义变量的输出 使用宏: C_UDMI( c, thread, index)       自变量类型:cell_t c       Thread *thread       int index ...

  2. django celery 异步执行任务遇到的坑

    部署后,任务没有持久化,所有用supervisor 进行进程管理 安装 pip install supervisor 创建 配置文件 [program:testplatform-flower] com ...

  3. mysql命令行修改密码

    1.以管理员身份打开cmd窗口2.进入安装mysql的bin目录.3.命令net start mysql开启服务4.mysql -u root -p 管理员登陆5.输入旧密码后进入数据库6.输入ALT ...

  4. Git 回滚 Master

    RenGuoQiang@PC-RENGUOQIANG MINGW64 /d/zgg/zgg-crm (master) $ git reset --hard 194e2cc8eec88743cc8978 ...

  5. openresty开发系列3--nginx的平滑升级

    openresty开发系列3--nginx的平滑升级 nginx服务器从低版本升级为高版本,如果强行停止服务,会影响正在运行的进程. 平滑升级不会停掉正在运行中的进程,这些进程会继续处理请求.但不会接 ...

  6. 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法

    一.JSON数据格式 1.1.常用JSON数据格式 1.对象方式:JSONObject的数据是用 { } 来表示的, 例如: { "id" : "123", & ...

  7. 算法习题---5.1大理石在哪(UVa10474)

    一:题目 现有N个大理石,每个大理石上写了一个非负整数.首先把各数从小到大排序,然后回答Q个问题.每个问题问是否有一个大理石写着某个整数x,如果是,还要回答哪个大理石上写着x.排序后的大理石从左到右编 ...

  8. Qt编写气体安全管理系统23-类型设置

    一.前言 类型设置这个功能模块大大拓展了整个系统的灵活性,将整个系统中所有用到的控制器型号.探测器数量.探测器型号.气体种类.气体符号都存储到数据库表中,用户在类型设置中可以自由添加删除和修改,这样后 ...

  9. Qt编写气体安全管理系统21-探测器管理

    一.前言 探测器在整个系统中是最核心的关键的硬件,终端节点硬件,安装有探测芯片装置,负责探测前端对应气体浓度,并记录值,等待控制器轮训数据回复,控制器信息表也是字段最多的,要存储位号.控制器名称.探测 ...

  10. if判断用法