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

      

  • 相关阅读:
    UDP的坏处
    进程控制块(Process Control Block, PCB)
    分布式中一些关键概念的解释
    线程池的设计实现
    [原创] 同步、异步、阻塞、非阻塞详解
    常用场景对文件状态的影响
    echo使用说明,参数详解
    Linux下源码安装ffmpeg及ffmpeg的简单使用说明
    127.0.0.1、0.0.0.0和本机IP地址的区别和使用
    链路层的简介和MTU
  • 原文地址:https://www.cnblogs.com/zjw520/p/3014784.html
Copyright © 2020-2023  润新知