您的位置:首页 > 其它

Quartz.net 的简单使用,创建定时任务

2015-08-21 11:11 423 查看
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();

JobDetail job = new JobDetail("job1", "group1", typeof(MyJob));

string cronExpr = System.Configuration.ConfigurationManager.AppSettings["cronExpr"];  //"*/1 * * * * ?";
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1", cronExpr);

sched.ScheduleJob(job, trigger);

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执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: