昨天使用Quartz.NET作了个定时任务的功能,并实现了多个定时任务的功能ui
下面这个类实现了以下功能:spa
一、对定时任务进行管理code
二、建立定时任务,须要给定时任务一个job的名称blog
三、判断给定的job的任务是否已存在string
四、中止定时任务的功能 it
namespace MyUKD.Quartz { /// <summary> /// QuartzSchedule管理 /// </summary> public class QuartzSchedulerMgr { private static ISchedulerFactory schedulerFactory; private static IScheduler scheduler; static QuartzSchedulerMgr() { schedulerFactory = new StdSchedulerFactory(); scheduler = schedulerFactory.GetScheduler(); scheduler.Start(); } /// <summary> /// 获取Scheduler /// </summary> /// <returns></returns> public static IScheduler GetScheduler() { return scheduler; } /// <summary> /// 建立一个任务 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jobName"></param> /// <param name="intervalInSeconds"></param> /// <param name="repeatCount"></param> /// <returns></returns> public static DateTimeOffset CreateJob<T>(string jobName, int intervalInSeconds, int repeatCount) where T : IJob { IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").Build(); ITrigger trigger = TriggerBuilder.Create().WithIdentity(jobName, $"{jobName}-TriggerGroup").StartNow() .WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds).WithRepeatCount(repeatCount)) .Build(); return scheduler.ScheduleJob(job, trigger); } /// <summary> /// 建立一个任务 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jobName"></param> /// <param name="intervalInSeconds"></param> /// <param name="repeatCount"></param> /// <param name="dataMap"></param> /// <returns></returns> public static DateTimeOffset CreateJob<T>(string jobName, int intervalInSeconds, int repeatCount, JobDataMap dataMap) where T : IJob { IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").UsingJobData(dataMap) .Build(); ITrigger trigger = TriggerBuilder.Create().WithIdentity(jobName, $"{jobName}-TriggerGroup").StartNow() .WithSimpleSchedule(x => x.WithIntervalInSeconds(intervalInSeconds).WithRepeatCount(repeatCount)) .Build(); return scheduler.ScheduleJob(job, trigger); } /// <summary> /// 建立一个任务 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jobName"></param> /// <param name="cronTime"></param> /// <param name="dataMap"></param> /// <returns></returns> public static DateTimeOffset CreateJob<T>(string jobName, string cronTime, JobDataMap dataMap) where T : IJob { IJobDetail job = JobBuilder.Create<T>().WithIdentity(jobName, $"{jobName}-JobGroup").UsingJobData(dataMap) .Build(); ICronTrigger trigger = new CronTriggerImpl(jobName, $"{jobName}-TriggerGroup", cronTime); return scheduler.ScheduleJob(job, trigger); } /// <summary> /// 中止执行的job,并删除此job /// </summary> /// <param name="jobName"></param> /// <returns></returns> public static bool UnscheduleJob(string jobName) { JobKey existKey = JobKey.Create(jobName, $"{jobName}-JobGroup"); TriggerKey exisTriggerKey = new TriggerKey(jobName, $"{jobName}-TriggerGroup"); scheduler.PauseJob(existKey); return scheduler.UnscheduleJob(exisTriggerKey) && scheduler.DeleteJob(existKey); } /// <summary> /// 是否存在相关名称的Job /// </summary> /// <param name="jobName"></param> /// <returns></returns> public static bool ExistJob(string jobName) { JobKey key = JobKey.Create(jobName, $"{jobName}-JobGroup"); return scheduler.CheckExists(key); } } }