• C# .net Quartz.net 动态添加修改时间


    一:使用原因,不使用windows服务。quartz.net框架使用方便

    二:使用方法如下

      1.Nuget下载,博主用的是 Quartz 2.6.1版本

      2.需要QuartzManage帮助类放在项目里,如下:

    public class QuartzManage
        {
            private static ISchedulerFactory sf = new StdSchedulerFactory();    //创建一个调度器工厂
            private static String JOB_GROUP_NAME = "group";                        
            private static String TRIGGER_GROUP_NAME = "trigger";
            private static IScheduler sched;            //创建一个调度器    
    
            public static void StartJob(string jobName, Type jobType, string time) 
            {
                sched = sf.GetScheduler();              //工厂生成一个调度器 
    
                JobDetailImpl jobDetail = new JobDetailImpl();      //新建一个任务 
                jobDetail.Name = jobName;
                jobDetail.Group = JOB_GROUP_NAME;
                jobDetail.JobType = jobType;
    
                CronTriggerImpl trigger = new 
              CronTriggerImpl(jobName, TRIGGER_GROUP_NAME);//新建一个触发器 trigger.CronExpressionString = time; sched.ScheduleJob(jobDetail, trigger); //将任务与触发器添加到调度器中 if (!sched.IsShutdown) { sched.Start(); } } /** * 从Scheduler 移除当前的Job,修改Trigger * * @param jobDetail * @param time * @throws SchedulerException * @throws ParseException */ public static void ModifyJobTime(ITrigger trigger, IJobDetail jobDetail, string time) { sched = sf.GetScheduler(); if (trigger != null) { CronTriggerImpl ct = (CronTriggerImpl)trigger; // 移除当前进程的Job sched.DeleteJob(jobDetail.Key); // 修改Trigger ct.CronExpressionString = time; // 重新调度jobDetail sched.ScheduleJob(jobDetail, ct); } } public static void ShutDownJob() { if (sched != null && !sched.IsShutdown) { sched.Shutdown(); } } }

     3.   执行内容。必须继承IJob

     public class TimeJob : IJob    
            {
                public void Execute(IJobExecutionContext context)
                {
                    System.IO.File.AppendAllText(@"c:Quartz.txt", DateTime.Now + Environment.NewLine);
                }
            } 

    4.执行Cron规则制定,可以动态添加修改Quartz执行规则(触发方式自己可以随场景而定)

      QuartzManage.StartJob("job1", typeof(TimeJob), "0/3 * * * * ?");  //三秒执行一次
      Thread.Sleep(20000);  
      QuartzManage.ShutDownJob();
      QuartzManage.StartJob("job1", typeof(TimeJob), "0/6 * * * * ?");  //六秒执行一次
  • 相关阅读:
    C#之app.config、exe.config和vshost.exe.config作用区别
    C#中decimal ,double,float的区别
    C#中取整,向上取,向下取
    mybatis中的#和$的区别
    mybatis在xml文件中处理大于号小于号的方法
    ORACLE分页查询SQL语法——高效的分页
    移除powerdesigner中Recent Files中无效链接的文件
    Visual Studio提示“无法启动IIS Express Web服务器”的解决方法
    ORA-12638: 身份证明检索失败 的解决办法
    态度决定一切《跟任何人都聊得来》
  • 原文地址:https://www.cnblogs.com/HansZimmer/p/10552875.html
Copyright © 2020-2023  润新知