.net 5 使用Quratz
1.安装Quratz
using Quratz
using Quratz.Core
using Quratz.impl
第一步:创建作业
第二步:创建调度器
第三步:创建作业细节
第四步:创建触发器
第五步:调度器负责调度作业,关联触发器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | public class WeatherForecastController : ControllerBase { private readonly DomeFactory factory; public WeatherForecastController(DomeFactory factory) { this .factory = factory; } public async Task<IActionResult> Index() { //2.创建调度器 ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); var sch = await schedulerFactory.GetScheduler(); //3.创建JobDetail,关联作业 var job = JobBuilder.Create<Myjob>() .WithIdentity( "myjob" ) .WithDescription( "我的调度器" ) .Build(); //4.创建触发器 var trigger = TriggerBuilder.Create() .WithIdentity( "myjob" ) .WithDescription( "我的调度器" ) .WithSimpleSchedule( x => x.WithIntervalInSeconds(3).RepeatForever() ) .WithCronSchedule( "cron表达式" ) .Build(); sch.JobFactory = factory; //5.关联触发器和job await sch.ScheduleJob(job, trigger); //6.启动调度器 await sch.Start(); return new EmptyResult(); } } public class DomeFactory : IJobFactory { private readonly IServiceProvider serviceProvider; public DomeFactory(IServiceProvider serviceProvider) { this .serviceProvider = serviceProvider; } public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) { //Job类型 Type type = bundle.JobDetail.GetType(); //返回jobType对应类型的实例 return serviceProvider.GetService(type) as IJob; } public void ReturnJob(IJob job) { var disposable=job as IDisposable; disposable.Dispose(); } } /// 1.创建作业 /// </summary> public class Myjob : IJob { private readonly ISchool school; public Myjob(ISchool school) { this .school = school; } public async Task Execute(IJobExecutionContext context) { var list = school.getList(); System.IO.File.AppendAllText( @"d:\asd.txt" , DateTime.Now.ToString()); } } |
注入两个服务
1 2 | services.AddSingleton<DomeFactory>(); services.AddSingleton<Myjob>(); |
思想:
使用工厂构造出 将没有有参够咱函数的Myjob 的生成一个有参的构造函数 是依赖注入能够注入
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术