C#定時調用的Quartz項目設計和實現
阿新 • • 發佈:2018-10-07
() 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.暫停View Code12 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 publicstring jobtriggergroup { get; set; } 27 28 ///作業的下次執行時間 29 30 public DateTime nexttime { get; set; } 31 32 /// 作業的上次執行時間 33 34 public DateTime pretime { get; set; }
3.項目整體設計
4.因為是c#代碼,所以采用的是自托管的方式
可以參考下面
https://www.itsvse.com/thread-3454-1-1.html
5.把Quartz裏面的調度器,定時器,作業寫一個通用類
publicView Codestatic 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); } }
6.總結,學習一個新東西先了解整體的框架和設計,再花時間去了解,其實源代碼裏面的demo是最好的
C#定時調用的Quartz項目設計和實現