.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 的生成一个有参的构造函数 是依赖注入能够注入

 

posted @   电器小君子  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示