public partial class TestQuarzWebForm : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //启动计划任务 SimpleTrigger //TestQuartzStart(); } private void TestQuartzStart() { IScheduler sched;//调度主程序接口 ISchedulerFactory sf = new StdSchedulerFactory();//初始化的标准调度器工厂类的一个新实例 sched = sf.GetScheduler(); //获取一个客户端可用的句柄一个Quartz调度 //创建一个Quartz.JobDetail ,与给定的名称和组,和所有其他属性的默认设置。如果为null,将使用Scheduler.DefaultGroup JobDetail job = new JobDetail("job1","group1", typeof(Test));//Test为实现了IJob接口的类 //这里可以获取当前时间进行判断 然后根据当前时间 然后设置多长时间执行一次 //DateTime dt = new DateTime(); // dt.AddHours(1); // DateTime ts = TriggerUtils.GetEvenHourDate(dt);//hour时 1小时后开始第一次运行 // DateTime ts2 = TriggerUtils.GetEvenMinuteDate(dt);//Minute分 DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒后开始第一次运行 TimeSpan interval = TimeSpan.FromSeconds(5);//每隔5秒钟执行一次 #region 解析 //public SimpleTrigger(string name, string group, string jobName, string jobGroup, DateTime startTimeUtc, DateTime? endTimeUtc, int repeatCount, TimeSpan repeatInterval); //1.触发器名,2.组名,3.任务名,4.任务组,5.多少时间之后开始执行第一次,6.结束时间,7.重复发射,8.执行的时间间隔 #endregion Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts,null, SimpleTrigger.RepeatIndefinitely, interval); //添加任务 sched.AddJob(job,true); sched.ScheduleJob(trigger); //确定Quartz.IJob中附表的给定触发器 sched.Start(); //开始执行计划 } }
定时执行的类
public class Test : IJob { private static ILog logger = LogManager.GetLogger(typeof(Test)); public void Execute(JobExecutionContext context) { try { Testsd(); string jobName = context.JobDetail.FullName; logger.Debug("任务执行了"+"工作任务名"+jobName+"当前时间"+DateTime.Now.ToString()); } catch (Exception ex) { JobExecutionException e2 = new JobExecutionException(ex); e2.RefireImmediately = true; logger.Debug("未处理异常"+ex+"任务异常:"+e2); } } public static void Testsd() { logger.Debug("执行le这个方法"); } }