C#定时调用的Quartz项目设计和实现

1.首先必须清楚一些概念:调度器,作业,定时触发器,如下

2.关于一个Quartz定时调用的项目的设计和实现

  把需要的东西抽象出来,比如把作业的一些属性,如作业的名称等,如下

 1 public int id { get; set; }
 2 /// 任务名称
 3 public string jobname { get; set; }
 4 
 5 /// job配置的时间
 6 public string jobcron { get; set; }
 7 
 8 /// job的分组的名称
 9 public string jobgroup { get; set; }
10 
11 /// 作业当前的状态,0.加入调度队列 1.未加入调度队列 2.暂停
12 public int jobtype { get; set; }
13 
14 public string jobtypename { get; set; }
15 
16 public string jobdescription { get; set; }
17 
18 /// 作业的开始时间
19 public DateTime createtime { get; set; }
20 
21 /// 0删除,1使用
22 public int type { get; set; }
23 
24 public string jobtrigger { get; set; }
25 
26 public string jobtriggergroup { get; set; }
27 
28 ///作业的下次执行时间
29 
30 public DateTime nexttime { get; set; }
31 
32 /// 作业的上次执行时间
33 
34 public DateTime pretime { get; set; }
View Code

3.项目整体设计

 

 4.因为是c#代码,所以采用的是自托管的方式

  可以参考下面

  https://www.itsvse.com/thread-3454-1-1.html

5.把Quartz里面的调度器,定时器,作业写一个通用类

 public static class JobManager
{ 
        public static void CreateScheduler()
        {

            ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
            sched = schedulerFactory.GetScheduler();

            sched.Start();

        }

        ///这边的type类型是通过反射方式加载进来的job作业类型如2里面的对象
        public static DateTimeOffset AddJob(Type jobType, string crons)
        {
            //创建作业的信息类
            IJobDetail jobCheck = JobBuilder.Create(jobType).
                WithIdentity(jobType.Name, jobDataGroup).
                UsingJobData(jobDataGroup, jobType.FullName)
                .Build();

            //创建时间篇
            ICronTrigger CronTrigger = new CronTriggerImpl(jobType.Name + jobtrigger, TriggerGroup, crons);//, crons
            return sched.ScheduleJob(jobCheck, CronTrigger);
        }
}
View Code

 6.总结,学习一个新东西先了解整体的框架和设计,再花时间去了解,其实源代码里面的demo是最好的

 

posted @ 2018-10-07 19:44  夏天的水果  阅读(404)  评论(0编辑  收藏  举报