Quartz.NET 2.0で簡単なスケジュールされたジョブを作成しようとしています
同様の問題について読んだことがありますが、うまくいきませんでした。
問題は、ジョブが StartAt トリガーの後に 1 回だけ実行されることです。
これが私のコードです:
public EntityMappingSvc()
{
IJobDetail job = JobBuilder.Create<EntityMappingJob>().WithIdentity("QueueJob").Build();
TriggerBuilder tb = TriggerBuilder.Create();
tb.WithIdentity("StdTrigger");
tb.WithSimpleSchedule(a => a.WithIntervalInMinutes(1));
tb.StartAt(new DateTimeOffset(new DateTime(2012, 11, 20, 10, 55, 0)));
tb.ForJob(job);
ITrigger trigger = tb.Build();
Global.sched.ScheduleJob(job, trigger);
}
protected void Application_Start(object sender, EventArgs e)
{
Global.factory = new StdSchedulerFactory();
Global.sched = Global.factory.GetScheduler();
Global.sched.Start();
GC.KeepAlive(factory);
GC.KeepAlive(sched);
}
仕事は単純です...しかし、それをテストするには、実際の仕事に影響を与えないエラーを発生させなければなりませんでした。
初めてジョブを実行した後、ブロックされます
while (runnable == null && run)
{
Monitor.Wait(this, 500);
}
if (runnable != null)
{
ran = true;
runnable.Run();
}
SimpleThreadPool の Run メソッドで。
助言がありますか?
PS: アプリケーションは WCF IIS ホステッド サービスです。
編集:
TriggerBuilder tb = TriggerBuilder.Create();
tb.WithIdentity("StdTrigger");
tb.WithCronSchedule("0 1 * * * ?");
tb.StartAt(new DateTimeOffset(new DateTime(2012, 11, 20, 10, 45, 0)));
tb.ForJob(job);
ICronTrigger trigger = tb.Build() as ICronTrigger;
Global.sched.ScheduleJob(job, trigger);
まだ動作していません。
同じ問題。