2017-05-28 4 views
1

J'ai deux tâches. Le premier devrait être exécuté une fois par heure et le second tous les jours à midi. Le déclencheur de la première tâche fonctionne bien, mais le second ne se déclenche que s'il est créé quelques minutes avant l'heure cible. Qu'est-ce que je fais mal?Le déclenchement Quartz.net ne se déclenche pas

La configuration de la première:

IJobDetail job = JobBuilder.Create<WatchJob>() 
    .WithIdentity("Job_1", "First") 
    .WithDescription("Job_1_First") 
    .UsingJobData("AppData", JsonConvert.SerializeObject("Job_1_First")) 
    .Build(); 

ITrigger trigger = TriggerBuilder.Create() 
    .WithIdentity("Trigger_1", "First") 
    .StartNow() 
    .WithSimpleSchedule(x => x 
    .WithIntervalInMinutes(1440) 
    .RepeatForever()) 
    .Build(); 

Et la seconde:

IJobDetail updateJob = JobBuilder.Create<UpdateJob>() 
     .WithIdentity("Job_1", "Second") 
     .WithDescription("Job_1_Second") 
     .UsingJobData("AppData", JsonConvert.SerializeObject("Job_1_Second")) 
     .Build(); 

    ITrigger updateTrigger = TriggerBuilder.Create() 
     .WithIdentity("Trigger_1", "Second") 
     .WithDailyTimeIntervalSchedule 
      (t => t 
       .WithIntervalInHours(24) 
       .OnEveryDay() 
       .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(12, 0)) 
      ) 
     .Build(); 

configuration du planificateur:

<quartz> 
    <add key="quartz.scheduler.instanceName" value="Test" /> 
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" /> 
    <add key="quartz.threadPool.threadCount" value="1" /> 
    <add key="quartz.threadPool.threadPriority" value="2" /> 
    <add key="quartz.jobStore.misfireThreshold" value="60000" /> 
    <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" /> 
</quartz> 
+0

Quelle version de quartz utilisez-vous? Est-ce un projet Asp.Net? – Rabban

+0

@Rabban, j'utilise Quartz 2.4.1 dans l'application console – iPhosgen

Répondre

0

Il semble que rien ne cloche avec votre définition Trigger. Mais Quartz (2.x) n'est pas si bien écrit sous le capot et peut parfois agir vraiment étrange. Votre deuxième déclencheur est un CronTrigger et peut être défini d'une autre manière.

Cela fonctionne pour moi:

ITrigger updateTrigger = TriggerBuilder.Create() 
    .WithIdentity("Trigger_1", "Second") 
    .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(12, 0)) 
    // this line tells quartz to start the trigger immediately, you can remove it, if you don't want this behaviour 
    .StartAt(DateTime.Now.AddDays(-1)) 
    .Build(); 
+0

Merci. Cela fonctionne vraiment. – iPhosgen