我正在尝试在 Quartz.NET 2.0 中进行简单的计划作业
我读过一个类似的问题,但对我没有用。
问题是作业在 StartAt 触发器后只执行一次。
这是我的代码:
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);
还是行不通。
同样的问题。