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 * * * * ?");  //六秒執行一次

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM