Chr☆s Kwok 的技术笔记

.NET, C#, WPF, WCF, WF, .NetCore & LINQ ... I know how it works because I know why it works ...

博客园 首页 新随笔 订阅 管理
  130 随笔 :: 0 文章 :: 30 评论 :: 30万 阅读

通过quartz配置一个任务,比如我设定每小时(整点)执行一次,比如15:28启动,预想结果应该是,在16:00第一次执行,然后类推。结果经常是,15:28就进行了第一次执行,也就是说quartz在启动时不按照预定排程执行了一次。这在实际操作中会带来不小的麻烦。

解决办法:((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;

复制代码
_scheduler = await GetSchedulerAsync();
Type type = Type.GetType(scheduleInfo.JobName, true, true);
IJobDetail job = JobBuilder.Create(type)
                            .WithIdentity(scheduleInfo.JobName, scheduleInfo.JobGroup)
                            .Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                            .StartAt(startRunTime)
                            .EndAt(endRunTime)
                            .WithIdentity(scheduleInfo.JobName, scheduleInfo.JobGroup)
                            .WithCronSchedule(scheduleInfo.CronExpress)
                            .Build();
((CronTriggerImpl)trigger).MisfireInstruction = MisfireInstruction.CronTrigger.DoNothing;
IList<ICronTrigger> triggers = new List<ICronTrigger> { trigger };
await _scheduler.ScheduleJob(job, new ReadOnlyCollection<ICronTrigger>(triggers), true);
if (!_scheduler.IsStarted) await _scheduler.Start();
复制代码

另外:下面一句如果存在相同名字的Job或Trigger参数replace设置为true可以更新作业的调度计划(如Cron重设)而不报错.
await _scheduler.ScheduleJob(job, new ReadOnlyCollection<ICronTrigger>(triggers), true);

await _scheduler.ScheduleJob(job, new ReadOnlyCollection<ICronTrigger>(triggers), true);
posted on   Chr☆s  阅读(10870)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示