2016-12-05 12 views
0

可変間隔でQuartz.netでジョブをスケジュールすることは可能ですか? たとえば、間隔は10から20で、ジョブをスケジュールする必要があります。ジョブは、各ジョブの実行後にリフレッシュされる10から20までの乱数でn秒ごとに実行されます。Quartz.netの可変間隔

ありがとうございました。

+0

どこがこの意味ですか? – Rabban

+0

https://stackoverflow.com/questions/25930384/how-do-i-force-a-quartz-net-job-to-restart-intervall-after-completion –

+1

元のトリガーを削除することはできませんUnschedulerJobメソッド?:http://quartznet.sourceforge.net/apidoc/1.0/html/html/ff17ee5c-4ba8-34e5-6dfc-600a13a6de2e.htm ...次に、ScheduleJobを使用して新しい間隔で新しいトリガーを追加しますメソッド:http://quartznet.sourceforge.net/apidoc/1.0/html/html/84be9956-052d-05d7-4366-0837fcd6d78b.htm また、両方を行うRescheduleJobメソッドがあります。http://quartznet.sourceforge .net/apidoc/1.0/html/html/44656a29-199e-7373-5547-e20318780802.htm – mm8

答えて

0

このように、最初の火災のためのあなたのトリガーをビルドします。

var triggerKey = new TriggerKey("simpleTrigger", "simpleTriggerGroup"); 
ITrigger trigger = TriggerBuilder.Create() 
        .WithIdentity(triggerKey) 
        .StartNow() 
        .Build(); 

次に、あなたの仕事のクラスは、トリガを変更するExecuteメソッドで:

public void Execute(IJobExecutionContext context) 
    { 
     Console.WriteLine(string.Format("{0} hello this is a test", DateTime.Now.ToString("r"))); 

     var newInterval = new Random().Next(20, 30); 

     // retrieve the trigger 
     var oldTrigger = context.Scheduler.GetTrigger(new TriggerKey("simpleTrigger", "simpleTriggerGroup")); 

     // obtain a builder that would produce the trigger 
     var tb = oldTrigger.GetTriggerBuilder(); 

     // update the schedule associated with the builder, and build the new trigger 
     var newTrigger = tb.StartAt(DateTime.Now.AddSeconds(newInterval)).Build(); 

     context.Scheduler.RescheduleJob(oldTrigger.Key, newTrigger); 
     Console.WriteLine("Trigger fired... changed interval to {0}", newInterval); 
    } 

ジョブは異なる間隔で実行されます。

+0

ありがとう!私は仕事のリスナーと一緒にやりましたが、あなたのやり方も変わりません! –