zoukankan      html  css  js  c++  java
  • Quartz.net 的简单使用,创建定时任务

     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执行
  • 相关阅读:
    openwrt的内核版本是在哪个文件中指定的?
    git如何将一个分支合并到另一个分支?
    cygwin如何下编译安装tmux?
    如何合并ts文件?
    在cygwin下创建的文件位于windows的哪个目录下?
    linux shell的for循环语法是怎样的?
    内部类访问局部变量时,为什么需要加final关键字
    Java8函数式编程的宏观总结
    Maven私服使用经验总结
    java关于Integer设置-128到127的静态缓存
  • 原文地址:https://www.cnblogs.com/yougmi/p/4747284.html
Copyright © 2011-2022 走看看