Quartz.NET中設置特定日期的Calendar

 

上一篇裏介紹了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);

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章