C# 如何使Quartz.net仅执行作业的剩余重复计数?
假设我们有一个作业和相应的触发器,配置如下:C# 如何使Quartz.net仅执行作业的剩余重复计数?,c#,quartz-scheduler,quartz.net,quartz,C#,Quartz Scheduler,Quartz.net,Quartz,假设我们有一个作业和相应的触发器,配置如下: var jobKey = new JobKey(typeof(HelloJob).Name, typeof(HelloJob).Name); IJobDetail job = JobBuilder.Create<HelloJob>() .WithIdentity(jobKey) .RequestRecovery() .Build();
var jobKey = new JobKey(typeof(HelloJob).Name, typeof(HelloJob).Name);
IJobDetail job = JobBuilder.Create<HelloJob>()
.WithIdentity(jobKey)
.RequestRecovery()
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity(string.Format("{0}Trigger", typeof(HelloJob).Name), typeof(HelloJob).Name)
.StartAt(DateBuilder.FutureDate(1, IntervalUnit.Second))
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.WithRepeatCount(9))
.Build();
var jobKey=new jobKey(typeof(HelloJob).Name,typeof(HelloJob).Name);
IJobDetail job=JobBuilder.Create()
.WithIdentity(作业密钥)
.RequestRecovery()
.Build();
ITrigger trigger=TriggerBuilder.Create()
.WithIdentity(string.Format(“{0}触发器”、typeof(HelloJob.Name)、typeof(HelloJob.Name)
.StartAt(DateBuilder.FutureDate(1,国际价值单位秒))
.使用SimpleSchedule(x=>x
.间隔秒(1)
.带重复计数(9))
.Build();
使用“quartz.jobStore.type=quartz.Impl.AdoJobStore.JobStoreTX,quartz”
嗯,我希望在正常情况下,这个任务执行10次,当然是这样。
问题是,如果在其生命周期中发生任何停止,我希望作业继续剩余的重复计数
例如,我在第五次执行作业时停止程序,下次运行程序时,我只想再执行作业五次,但执行了10次
我应该如何配置调度程序、作业和触发器才能执行此操作?您可以通过存储程序执行之间的剩余计数来执行此操作:
- 在程序“停止”时,将剩余计数保存到外部存储器(文件、数据库等) 实际上,最好的方法是在每次作业执行后执行此操作
- 在程序“启动”中,从存储器中读取值,并在
代替常量中使用它。使用RepeatCount()
谢谢,但我正在寻找嵌入Quartz.net的解决方案。我不想处理保存和恢复数字的问题。此外,假设可能发生断电,我无法检测到程序停止。我必须在我自己的数据库中保存每个周期后每个作业的执行次数,这有点烦人。不管怎样,我对你的答案投了赞成票。如果有更好的解决方案,我们将不胜感激。