1 ISchedulerFactory sf = new StdSchedulerFactory(); 2 sched = sf.GetScheduler(); 3 4 JobDetail job = new JobDetail("job1", "group1", typeof(MyJob)); 5 6 string cronExpr = System.Configuration.ConfigurationManager.AppSettings["cronExpr"]; //"*/1 * * * * ?"; 7 CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1", cronExpr); 8 9 sched.ScheduleJob(job, trigger); 10 11 sched.Start();
自定義一個Job類用來執行定時的方法(引用相應的DLL)
public class MyJob : IJob { public void Execute(JobExecutionContext context) { using (StreamWriter write = new StreamWriter("D:/test.txt", true)) { write.Write(DateTime.Now.ToString() + " " + "Execute..."); } } }
執行的時間可以在配置文件進行配置,只需要按照相應的格式就行
<appSettings> <!--每月21日凌晨1點執行--> <add key="cronExpr1" value="0 06 10 21 * ?"/> <!--<add key="cronExpr1" value="*/1 * * * * ?"/>--> </appSettings>
附:配置文件格式
Cron表達式范例: 每隔5秒執行一次:*/5 * * * * ? 每隔1分鍾執行一次:0 */1 * * * ? 每天23點執行一次:0 0 23 * * ? 每天凌晨1點執行一次:0 0 1 * * ? 每月1號凌晨1點執行一次:0 0 1 1 * ? 每月最后一天23點執行一次:0 0 23 L * ? 每周星期天凌晨1點實行一次:0 0 1 ? * L 在26分、29分、33分執行一次:0 26,29,33 * * * ? 每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ? Cron表達式(在Quartz.net里面會用到) 由7段構成:秒 分 時 日 月 星期 年(可選) "-" :表示范圍 MON-WED表示星期一到星期三 "," :表示列舉 MON,WEB表示星期一和星期三 "*" :表是“每”,每月,每天,每周,每年等 對於星期里面,SUN=1 SAT=6 "/" :表示增量:0/15(處於分鍾段里面) 每15分鍾,在0分以后開始,3/20 每20分鍾,從3分鍾以后開始 "?" :只能出現在日,星期段里面,表示不指定具體的值 "L" :只能出現在日,星期段里面,是Last的縮寫,一個月的最后一天,一個星期的最后一天(星期六) "W" :表示工作日,距離給定值最近的工作日 "#" :表示一個月的第幾個星期幾,例如:"6#3"表示每個月的第三個星期五(1=SUN...6=FRI,7=SAT) 示例: "0 0/5 * * * ?" :每5分鍾觸發一次,從0秒以后開始 "10 0/5 * * * ?" :每5分鍾觸發一次,從10秒以后開始。(10:00:10am, 10:05:10am) "0 30 10-13 ? * WED,FRI" :表示10:30,11:30,12:30,13:30,每一個星期三和星期五執行 "0 0/30 8-9 5,20 * ?" :表示每個月5號和20號 8:00, 8:30, 9:00, 9:30執行