c#quartz触发_C# 定时调度之Quartz

本文介绍了如何在C#中使用Quartz库进行定时任务调度,包括Quartz的三大核心对象IScheduler、IJob和ITrigger的介绍、初始化及使用方法,以及如何传递参数、设置定时策略。此外,还探讨了Quartz的监听器框架和日志提供者,帮助开发者实现任务执行的监控和日志记录。
摘要由CSDN通过智能技术生成

工作中我们经常碰到定时或者固定时间点去做一些事情,然后每天到时间点就会去做这样的事情,如果理解这样的场景,我们就要引入今天我们的主角Quartz,其实这个跟数据库的作业类似,但是不仅仅局限于数据库。

一: quartZ引入&三大核心对象简介

1:在项目中打开Nuget管理,然后搜索QuartZ,现在最新的版本是3.0.7,需要在Framework4.5.2上面使用。

2:quartZ的三大核心对象

A:IScheduler:单元/实例,在这里去完成定时任务的配置,只有单元启动,里面的作业才能正常运行

B:IJob:任务,定时执行动作就是Job

C:ITrigger:定时策略(设置执行的频率或者执行方式)

二:三大核心对象的初始化以及使用如下:

#region schedulerConsole.WriteLine("初始化scheduler......");

StdSchedulerFactory factory= newStdSchedulerFactory();

IScheduler scheduler= awaitfactory.GetScheduler();//scheduler.ListenerManager.AddSchedulerListener(new CustomSchedulerListener());//scheduler.ListenerManager.AddTriggerListener(new CustomTriggerListener());//scheduler.ListenerManager.AddJobListener(new CustomJobListener());

awaitscheduler.Start();#endregion

//IJob ITrigger

{//创建作业

IJobDetail jobDetail = JobBuilder.Create()

.WithIdentity("testjob", "group1")

.WithDescription("This is TestJob")

.Build();//IJobDetail jobDetail = JobBuilder.Create()//.WithIdentity("testjob", "group1")//.WithDescription("This is TestJob")//.Build();

jobDetail.JobDataMap.Add("student1", "Milor");

jobDetail.JobDataMap.Add("student2", "心如迷醉");

jobDetail.JobDataMap.Add("student3", "宇洋");

jobDetail.JobDataMap.Add("Year", DateTime.Now.Year);//ITrigger trigger = TriggerBuilder.Create()//.WithIdentity("trigger1", "group1")//.StartNow()//.WithSimpleSchedule(x => x//.WithIntervalInSeconds(10)//.WithRepeatCount(10)//.RepeatForever())//.WithDescription("This is testjob's Trigger")//.Build();//创建时间策略

ITrigger trigger =TriggerBuilder.Create()

.WithIdentity("testtrigger1", "group1")

.StartAt(new DateTimeOffset(DateTime.Now.AddSeconds(10)))//.StartNow()//StartAt

.WithCronSchedule("5/10 * * * * ?")//每隔一分钟//"10,20,30,40,50,0 * * * * ?"

.WithDescription("This is testjob's Trigger")

.Build();

trigger.JobDataMap.Add("student4", "Ray");

trigger.JobDataMap.Add("student5", "心欲无痕");

trigger.JobDataMap.Add("student6", "风在飘动");

trigger.JobDataMap.Add("Year", DateTime.Now.Year + 1);awaitscheduler.ScheduleJob(jobDetail, trigger);

Console.WriteLine("scheduler作业添加完成......");

}

[PersistJobDataAfterExecution] //执行后可以保留执行结果

[DisallowConcurrentExecution] // 让一个任务执行完毕以后 才去执行下一个任务

public classTestJob : IJob

{publicTestJob()

{

Console.WriteLine("This is TestJob的构造。。。");

}public asyncTask Execute(IJobExecutionContext context)

{await Task.Run(() =>{

Console.WriteLine();

Console.WriteLine("*****************************");

{

JobDataMap dataMap=context.JobDetail.JobDataMap;

Console.WriteLine(dataMap.Get("student1"));

Console.WriteLine(dataMap.Get("student2"));

Console.WriteLine(dataMap.Get("student3"));

Console.WriteLine(dataMap.GetInt("Year"));

}

Console.WriteLine(

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值