2012-11-27 11 views
9

C# içinde Quartz.NET kullanarak çalışıyorum ve bir CronTrigger üzerinde yanlış ateş komutunu ayarlamada sorunlar yaşıyorum. Quartz DB yüklü bir SQL arka uç çalıştırıyorum. Bir iş oluşturmak ve bir zamanlayıcı çalıştırmak için iyi çalışan aşağıdaki kod var. Ben erişebilirQuartz.NET ayarı MisfireInstruction

IScheduler _scheduler; 
IJobDetail job; 
ISchedulerFactory sFactory; 
ICronTrigger trig; 

sFactory = new StdSchedulerFactory(); 

_scheduler = sFactory.GetScheduler(); 
_scheduler.Start(); 

job = JobBuilder.Create<Test>().WithIdentity("testJob", "testGroup").Build(); 
trig = (ICronTrigger) TriggerBuilder.Create().WithIdentity("testTrigger", "testGroup").WithCronSchedule("0/10 * * * * ?").Build(); int i = trig.MisfireInstruction; 

_scheduler.ScheduleJob(job, trig); 

sadece misfireinstruction bir int trig.MisfireInstruction olduğunu ve bunu belirleyemezsiniz. CronScheduleBuilder içinde WithMisfireHandlingInstruction ile başlayan bazı işlevler de vardır.

+0

'MisfireInstruction.CronTrigger.FireOnceNow' aradığım şey olabilir mi? –

+0

Başlığınızı düzenledim. Lütfen, "[Sorular soruların başlığında" etiketler içeriyor mu? "(Http://meta.stackexchange.com/questions/19190/)" bölümüne bakacak olursak, fikir birliği "hayır, yapmamalı" dır. –

+0

Teşekkürler, bunun için üzgünüm! –

cevap

15

Kişisel tetik oluşturma böyle olmalı:

  • WithMisfireHandlingInstructionDoNothing
  • WithMisfireHandlingInstructionFireAndProceed
  • WithMisfireHandlingInstructionIgnoreMisfires
:

trig = (ICronTrigger)TriggerBuilder 
     .Create() 
     .WithIdentity("testTrigger", "testGroup") 
     .WithCronSchedule("0/10 * * * * ?", x => x.WithMisfireHandlingInstructionFireAndProceed()) 
     .Build(); 

Bu seçenekleri kullanabilirsiniz

here iyi bir açıklama bulabilirsiniz.

+0

Mükemmel, tam olarak ihtiyacım olan şey bu. Teşekkür ederiz! –

+0

(Ben oy verdim, ama henüz yeterince temsilcisi yok) –

+0

Memnun oldum. Gelecekte her zaman bana oy verebilirsiniz :-) Şerefe. – LeftyX