Quartz是第三方提供的定时调度框架,其官方地址http://www.quartz-scheduler.org/
同样,安装惯例,该篇同样也是从项目中mark出来,方便对这个技术的惯例,好了废话不说,直接上code
第一步,引用Quartz相关的dll组件
下载地址http://download.csdn.net/detail/just_shunjian/9488369
第二步,项目中封装成QuartzHelper工具类
class QuartzHelper { private static IScheduler scheduler = null; public class EmailJob : IJob { public void Execute(IJobExecutionContext context) { //此处在响应定时时执行你需要执行的任务</span> } } /// <summary> /// 初始化定时器 /// </summary> /// <param name="type">0:每天,1:每周</param> /// <param name="weekday">星期几</param> /// <param name="hour">小时</param> /// <param name="minute">分钟</param> public static bool init(int type, string weekday, int hour, int minute) { try { //释放定时器 release(); //工厂 ISchedulerFactory factory = new StdSchedulerFactory(); //启动 if (scheduler == null) scheduler = factory.GetScheduler(); //启动 scheduler.Start(); //描述工作 IJobDetail job = JobBuilder.Create<EmailJob>().WithIdentity("Ipjob", "Ipjobs").Build(); //触发器 ITrigger trigger = null; if (type == 0) {//每天定时执行 trigger = TriggerBuilder.Create() .WithIdentity("Iptrigger", "Ipjobs") .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(hour, minute))//每天8:40执行 .Build(); } else if (type == 1) {//每周星期几定时执行 DayOfWeek wday = (DayOfWeek)System.Enum.Parse(typeof(DayOfWeek), weekday); trigger = TriggerBuilder.Create() .WithIdentity("Iptrigger", "Ipjobs") .WithSchedule(CronScheduleBuilder.WeeklyOnDayAndHourAndMinute(wday, hour, minute))//每周相应时间执行 .Build(); } //执行 scheduler.ScheduleJob(job, trigger); } catch (Exception) { return false; } return true; } /// <summary> /// 是否定时器 /// </summary> public static void release() { if (scheduler != null && !scheduler.IsShutdown) { scheduler.Shutdown(true); scheduler = null; } } }
第三步,执行QuartzHelper工具类中的init方法
传入想要定时的方式及时间。即可完成定时设置,在时间达到时就会执行EmailJob中的方法Execute