Quartz.net调度程序

时间:2015-11-24 05:46:49

标签: quartz.net quartz.net-2.0

我们安装了quartz.net调度程序服务并配置了一个(内存)作业,每天晚上10点运行。如果重新启动托管此服务的服务器,是否有办法在服务启动时强制作业运行?在正常情况下,作业应该按计划在晚上10点开始,但是每当重新启动服务器/服务时,我们都希望该作业立即运行,即使它没有安排在那时运行。如果有一些配置值来实现这一点,那将是最好的选择。

2 个答案:

答案 0 :(得分:1)

编写一个小代码,读取一个小的xml文件(自定义的一个).... 并将其放入您的启动代码中。

foreach( xmlElement in yourXmlFile)
{
 string someJobName= ""; /* read xml for jobName */
    String someJobGroup= ""; /* read xml for job group name */
    Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity(someJobName, someJobGroup)
                .startNow()
                .build();

}

答案 1 :(得分:0)

您可以借助WithMisfireHandlingInstructionFireAndProceed CronScheduleBuilder方法执行此操作,如下所示:

ITrigger trigger = TriggerBuilder.Create()
        .WithIdentity("trigger1", "group1")
        .StartNow()
        .WithSchedule(CronScheduleBuilder                   
            .WeeklyOnDayAndHourAndMinute(DayOfWeek.Monday, 09, 00)
            .WithMisfireHandlingInstructionFireAndProceed()     
            //MISFIRE_INSTRUCTION_FIRE_NOW  
            .InTimeZone(TimeZoneInfo.FindSystemTimeZoneById("GTB Standard Time"))
    )
    //.ForJob(myJobKey)
    .Build();
    scheduler.ScheduleJob(job, trigger); 

希望这会有所帮助......