.net 5 使用Quratz
1.安装Quratz
using Quratz
using Quratz.Core
using Quratz.impl
第一步:创建作业
第二步:创建调度器
第三步:创建作业细节
第四步:创建触发器
第五步:调度器负责调度作业,关联触发器
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());
}
}
注入两个服务
services.AddSingleton<DomeFactory>(); services.AddSingleton<Myjob>();
思想:
使用工厂构造出 将没有有参够咱函数的Myjob 的生成一个有参的构造函数 是依赖注入能够注入

浙公网安备 33010602011771号