【发布时间】:2015-05-07 12:46:05
【问题描述】:
我的目标是让 Quartz.NET 以精确的 25Hz 或每 40 毫秒执行一次作业。
我正在使用以下触发器:
ITrigger MyTrigger = TriggerBuilder.Create().WithIdentity("T1").ForJob("MyJob").WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromMilliseconds(40)).RepeatForever()).Build();
还有以下工作:
[DisallowConcurrentExecution]
private class MyJob : Quartz.IJob
{
public void Execute(IJobExecutionContext context)
{
Idx++;
Console.WriteLine("Job {0} fired at {1}ms", Idx, MyStopWatch.ElapsedMilliseconds);
}
}
问题在于前 150 次左右的处决执行得太快了。例如,前 60 次迭代都在秒表上以 20 毫秒或 21 毫秒触发。之后,它们每 200 毫秒成束发射,直到在 1000 毫秒左右稳定,然后按预期每 40-42 毫秒开始发射。
如果前一个作业在 40 毫秒内被触发,我如何防止 Quartz 触发作业?
这种行为的根源是什么?
【问题讨论】:
-
出于好奇,您使用的是 RAMJobStore 还是 ADOJobStore?
-
我正在使用 RAMJobStore
-
这是一个有趣的问题——如果你在这里没有得到答案,那么你可以试试github
标签: quartz.net