Quartz作业调度
interface INJob : IJob { ITrigger DefTrigger(); } public class NewBillMonthlySocialJob : INJob { public void Execute(IJobExecutionContext context) { Console.WriteLine("1234"); } public ITrigger DefTrigger() { ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("mytrigger", "group1") .StartNow() .WithCronSchedule("/5 * * ? * *") //时间表达式,5秒一次 .Build(); //// 每天23点0分执行 //return TriggerBuilder.Create().WithCronSchedule("0 0 23 * * ?").Build(); return trigger2; } } public class JobScheduler { private IScheduler scheduler; private static JobScheduler single; public static JobScheduler Single { get { if (single == null) single = new JobScheduler(); return single; } } private JobScheduler() { scheduler = StdSchedulerFactory.GetDefaultScheduler(); INJob[] jobs = GetJobs(); foreach (var job in jobs) { scheduler.ScheduleJob(JobBuilder.Create(job.GetType()).Build(), job.DefTrigger()); } } private INJob[] GetJobs() { List<INJob> jobs = new List<INJob>(); Type[] types = Assembly.GetCallingAssembly().GetTypes(); foreach (var type in types) { if (type == typeof(INJob)) continue; if (typeof(INJob).IsAssignableFrom(type)) { jobs.Add((INJob)Activator.CreateInstance(type)); } } return jobs.ToArray(); } public void Start() { scheduler.Start(); } }
static void Main(string[] args) { JobScheduler.Single.Start(); Console.Read(); }
时间设置规则
"0 0 12 * * ?" 每天中午12 点触发 "0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 0 0/30 * * * * 每个三十分钟
Quartz.NET的CronTrigger中第一部分表示秒,然后是分,小时,日期,月份,星期
ITrigger trigger1 = TriggerBuilder.Create() .WithIdentity("触发器名称", "触发器组") .StartNow() //现在开始 .WithSimpleSchedule(x => x //触发时间,5秒一次。 .WithIntervalInSeconds(5) .RepeatForever()) //不间断重复执行 .Build();

浙公网安备 33010602011771号