1. 程式人生 > >C#定時調用的Quartz項目設計和實現

C#定時調用的Quartz項目設計和實現

() pub factor 總結 entity com hid 項目設計 tor

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是最好的

 

C#定時調用的Quartz項目設計和實現