• Quartz.NET常用方法 02


     上一篇里介绍了Job和Trigger的常用方法,这一节将介绍Calendar,它的作用是排除特定的日期时间。

     
    Calendar的常用类
    DailyCalendar 排除每天某个时间段任务的执行
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
    
            //使任务在10点到11点间不再执行
            DailyCalendar cale = new DailyCalendar(
               DateBuilder.DateOf(10, 0, 0).DateTime,
               DateBuilder.DateOf(11, 0, 0).DateTime
            );
            sche.AddCalendar("myCalendar", cale, true, true); 
     
    WeeklyCalendar 排除每周某个星期的任务的执行
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
            
            WeeklyCalendar cale = new WeeklyCalendar();
            cale.SetDayExcluded(DayOfWeek.Thursday, true);  //让星期四不触发Schedule
            //cale.SetDayExcluded(DayOfWeek.Thursday, false); //让星期四触发Schedule
            sche.AddCalendar("myCalendar", cale, true, true);
     
    HolidayCalendar 排除某一天的任务的执行(如果涉及到同一天跨年的情况,需要多次添加不同年份)
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
    
            HolidayCalendar cale = new HolidayCalendar();
            cale.AddExcludedDate(DateTime.Now.AddYears(-1)); //排除去年的今天不处理
            cale.AddExcludedDate(DateTime.Now); //排除今天不处理
            sche.AddCalendar("myCalendar", cale, true, true);
     
    MonthlyCalendar 排除每月某一天的任务的执行
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
    
            MonthlyCalendar cale = new MonthlyCalendar();
            cale.SetDayExcluded(25, true);  //排除每个月25号执行
            sche.AddCalendar("myCalendar", cale, true, true);
    AnnualCalendar 排除每年某一天的任务的执行
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
            
            AnnualCalendar cale = new AnnualCalendar();
            //12月25号不执行
            cale.SetDayExcluded(new DateTimeOffset(2018, 12, 25, 12, 0, 0, TimeSpan.FromHours(8)), true);  
            sche.AddCalendar("myCalendar", cale, true, true);
     
    CronCalendar 通过Cron表达式排除任务的执行
    例子:
            var sche = StdSchedulerFactory.GetDefaultScheduler();
            sche.Start();
    
            //只在营业时间执行8AM-5PM
            CronCalendar cale = new CronCalendar("* * 0-7,18-23 ? * *");
    
            sche.AddCalendar("myCalendar", cale, true, true);
     
     

  • 相关阅读:
    DLL相关注意
    给我个理由要用虚析构函数
    字符指针常量和字符数组
    给自己普及网络基本知识
    面向对象三大基本特性,五大基本原则
    C/C++内存区域划分
    C++多态性
    Java XML Schema详解
    Java SE 第一百零五讲 对象的克隆与浅拷贝
    Java SE 第九十七~一百零五讲 线程与进程
  • 原文地址:https://www.cnblogs.com/AlexanderArima/p/12106653.html
Copyright © 2020-2023  润新知