当前位置: 首页 > news >正文

Quartz.Net_快速开始

简述

Quartz中主要分为三部分,JobDetail、Trigger、Scheduler,分别是任务、触发器、调度器,三者的关系为:Trigger控制JobDetail的执行时间和频率,而Scheduler负责将具体的Trigger与具体的JobDetail绑定

1.安装Quartz依赖

2.编写代码

①实现IJob接口与创建JobDetail

实现IJob接口

public class MyJob : IJob
{public async Task Execute(IJobExecutionContext context){// context.ScheduledFireTimeUtc?.LocalDateTime 执行时间// context.NextFireTimeUtc?.LocalDateTime 下次执行时间Console.WriteLine($"任务执行:{DateTime.Now}");Console.WriteLine($"执行时间:{context.ScheduledFireTimeUtc?.LocalDateTime}");Console.WriteLine($"下次执行时间:{context.NextFireTimeUtc?.LocalDateTime}");await Task.CompletedTask;}
}

 创建JobDetail

public class JobDetailGetter
{public static IJobDetail GetJobDetail<T>(JobKey name) where T : IJob{return JobBuilder.Create<T>().WithIdentity(name).Build();}
}

Execute函数中的代码即为定时任务执行的操作

②创建Trigger

var triggerBuilder = TriggerBuilder.Create()//.StartNow().StartAt(startTime).EndAt(endTime).WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds) // 设置时间间隔: 秒//.WithRepeatCount(10)                    // 设置间隔时长.RepeatForever());
public class TriggerGetter
{public static ITrigger GetSecondsTrigger(DateTimeOffset startTime, DateTimeOffset endTime, int intervalInSeconds){// Trigger构造器var triggerBuilder = TriggerBuilder.Create()//.StartNow().StartAt(startTime).EndAt(endTime).WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds) // 设置时间间隔: 秒//.WithRepeatCount(10)                      // 设置间隔时长.RepeatForever());// 构造并返回Triggerreturn triggerBuilder.Build();}
}

③创建Scheduler(建议使用单例封装)

public class SchedulerGetter
{// 由CLR保证: 在程序第一次使用该类之前被调用, 而且只调用一次private static readonly IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;public static async Task<IScheduler> GetSchedulerAsync(){return scheduler;}
}

3.测试

static async Task Main(string[] args)
{IScheduler scheduler = await SchedulerGetter.GetSchedulerAsync();var startTime = new DateTimeOffset(DateTime.Now);var endTime = new DateTimeOffset(DateTime.Now.AddSeconds(10));ITrigger trigger = TriggerGetter.GetSecondsTrigger(startTime, endTime, 3);IJobDetail jobDetail = JobDetailGetter.GetJobDetail<MyJob>(new JobKey("ABC"));await scheduler.ScheduleJob(jobDetail, trigger);Thread.Sleep(10000);
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 什么是AIGC?什么是AGI?
  • python和java哪个发展前景好?
  • 深度学习与大模型第1课环境搭建
  • 找不同-第15届蓝桥省赛Scratch初级组真题第4题
  • 【SQL】Delete使用
  • perf 基础 -- perf ext_mem_req
  • 如何测试一个算法
  • WPF性能优化之UI虚拟化
  • 挑战亿级数据:安企CMS性能优化的探索之路
  • [Meachines] [Insane] Bankrobber XSS-MDOG+SQLI+XSRF+Local-RCE+Bankv2转账模拟应用缓冲区溢出
  • 【QT】十分钟全面理解 信号与槽的机制
  • ML18_EM算法
  • MySQL表操作及约束
  • 2024国赛数学建模ABC题思路模型
  • 动态化-鸿蒙跨端方案介绍
  • .pyc 想到的一些问题
  • 【翻译】babel对TC39装饰器草案的实现
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • JavaScript中的对象个人分享
  • React-flux杂记
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Zsh 开发指南(第十四篇 文件读写)
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关于字符编码你应该知道的事情
  • 回顾2016
  • 什么软件可以剪辑音乐?
  • 数据仓库的几种建模方法
  • 思维导图—你不知道的JavaScript中卷
  • 通过npm或yarn自动生成vue组件
  • 写给高年级小学生看的《Bash 指南》
  • Spring第一个helloWorld
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 回归生活:清理微信公众号
  • 选择阿里云数据库HBase版十大理由
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Java基础复习笔记 第16章:网络编程
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • # 达梦数据库知识点
  • #mysql 8.0 踩坑日记
  • #考研#计算机文化知识1(局域网及网络互联)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (六)激光线扫描-三维重建
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET 5种线程安全集合
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net6 Api Swagger配置
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .Net转前端开发-启航篇,如何定制博客园主题