using Quartz;
public static class SchedulerProgram { public static void Start(IScheduler scheduler = null) { try { Assembly asm = typeof(SchedulerProgram).GetTypeInfo().Assembly; Type[] types = asm.GetTypes(); IDictionary<int, Type> typeMap = new Dictionary<int, Type>(); List<Type> typeList = new List<Type>(); foreach (Type t in types) { if (new List<Type>(t.GetInterfaces()).Contains(typeof(IJobScheduler))) { typeList.Add(t); } } foreach (Type t in typeList) { IJobScheduler schedule = ObjectUtils.InstantiateType<IJobScheduler>(t); if (scheduler == null) { schedule.Run().ConfigureAwait(false); } else { schedule.Run(scheduler).ConfigureAwait(false); } } } catch (Exception ex) { throw ex; } } }
public class TestJobScheduler : IJobScheduler { public async Task Run(IScheduler scheduler) { Logger.Writelog("Call job scheduler"); //创建任务 IJobDetail job = JobBuilder.Create<TestJob>(). WithIdentity("EntityRelationshipTestJob", "CRMJobGroup"). UsingJobData("jobschedulename", "EntityRelationshipTestJob"). Build(); //创建触发器 ITrigger trigger = TriggerBuilder.Create().WithIdentity("ContactTrigger", "TimeGroup").WithSimpleSchedule(t => t.WithIntervalInMinutes(30).WithRepeatCount(0)).Build();// test trigger //添加任务及触发器至调度器中 await scheduler.ScheduleJob(job, trigger); //启动 Logger.Writelog("Start job scheduler"); await scheduler.Start(); } public Task Run() { throw new NotImplementedException(); } }
public interface IJobScheduler { /// <summary> /// /// </summary> /// <returns></returns> Task Run(); /// <summary> /// 外部传入scheduler /// </summary> /// <param name="scheduler"></param> /// <returns></returns> Task Run(IScheduler scheduler); }
public class TestJob : IJob { public Task Execute(IJobExecutionContext context) {//具体的方法 return Task.FromResult(0); } }