Quartz.Net中设置的时间触发比需要的时间长,引起的重复触发。
我现在用的是2.0.1版本 我有一个任务 有可能需要1-X秒(X秒代表这个时间是不确定的 有可能要1秒 也有可能100秒 甚至更长时间)才能处理完,,但是我设置的触发是3秒 怎么能保证我是做完了第一次 然后等待3秒再执行呢??
我目前的设置定时的代码如下:、
public void Start(object sender, EventArgs e)
{
try
{
// 在应用程序启动时运行的代码
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler();
//新建一个计划任务
IJobDetail job = JobBuilder.Create<Test01>()
.WithIdentity("job1", "group1").Build();
//该任务执行时间为每隔10秒中,如果要每隔5分钟可以这样0 0/5 * * * * ?
//这样的格式表示每隔5分钟整执行
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithSchedule(CronScheduleBuilder.CronSchedule(new CronExpression("0/1 * * * * ?")))
.Build();
//启动任务
sched.ScheduleJob(job, trigger);
sched.Start();
//trigger.
// sched.
// sched.Shutdown(true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
[解决办法]
Quartz.Net 的回调接口可以试试。
不过比较简单的就是声明一个Boolean值来表示上一个任务完成与否。
Quartz.Net每3秒调用一次,如果上一个没有完成就直接退出。
这样差不多就是上一个任务完成后3秒执行新任务了
[解决办法]
给你的Job类加上[DisallowConcurrentExecution]标记