Quartz.net 定时任务矿建Demo
1. 首先新建一个 window 控制台程序
2. 通过 nuget 的方式搜索并安装 Quartz 。 安装的时候回引入3个程序集 Quartz.dll 、Common.logging.dll 、 Common.logging.Core.dll 程序集
3. 穿件一个继承 IJob 的类,实现其中的 Excute() 方法,此方法中的内容就是制定时间内需要执行的任务。
/// <summary> /// 具体的任务 /// </summary> public class SampJob : Quartz.IJob { /// <summary> /// 每次需要执行的任务 /// </summary> /// <param name="context">执行任务上下文</param> public void Execute(Quartz.IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("r") + "任务"); } }
2. 在 program 程序中添加以下代码
class Program { static void Main(string[] args) { // 1.0 创建一个作业调度池 -- 获取计划者 ISchedulerFactory factory = new Quartz.Impl.StdSchedulerFactory(); IScheduler scheduler = factory.GetScheduler(); // 2.0 创建一个具体的作业 IJobDetail job = JobBuilder.Create<SampJob>().Build(); // 3.0 创建并配置一个触发器,每隔3秒钟执行一次,循环次数为 int 的最大值 //ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().WithSimpleSchedule(t => t.WithIntervalInSeconds(3).WithRepeatCount(int.MaxValue)).Build(); // 3.1 创建并配置一个触发器, 引入 cron-like 表达式 DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2); //NextGivenSecondDate:如果第一个参数为null则表名当前时间往后推迟2秒的时间点。 DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddYears(2), 3); // 创建并配置一个触发器 ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime).WithCronSchedule("1,10,14 10,20,25,26,33,54 * * * ? ").Build(); // 4.0 加入作业 调度池中 scheduler.ScheduleJob(job, trigger); // 5.0 开始运行 scheduler.Start(); Console.ReadKey(); } }