Quartz_SimpleTrigger

 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这个方法");
        }

    }

  

posted on 2013-04-11 16:44  ——阿文  阅读(285)  评论(0编辑  收藏  举报

导航