zoukankan      html  css  js  c++  java
  • Quartz.Net 入门

    Quartz.Net用于定时执行某些任务,系统中的发送邮件,电商平台促销活动等。
     
    实现方式,在window service中通过Quartz.net控制任务的执行和调度。
     
    在Nuget中安装Quartz : Install-Package Quartz
    以下记录主要实现代码:
     
    1.创建定时执行的任务
    定义一个类,实现IJob接口 新建UpdatecadJob.cs
     
     1  public class UpdatecadJob : IJob
     2     {
     3         string LocalFilePath = ConfigurationManager.AppSettings["LocalFilePath"];  //CAD文件存储路径
     4         public async Task Execute(IJobExecutionContext context)
     5         {
     6             try
     7             {
     8                 await Task.Run(() => UpdatecadJobFun());
     9             }
    10             catch (Exception ex)
    11             {
    12                 LogHelper.WriteLogs("定时更新cad出错:" + ex.Message);
    13                 throw ex;
    14             }
    15         }
    16         public void UpdatecadJobFun()
    17         {
    18             LogHelper.WriteLogs("这是定时任务:"+DateTime.Now.ToString("yyyy-MM-dd  HH:mm:ss")); 
    19         }
    20          
    21     }
    22  
    2.创建一个任务对象 
    用于对任务进行分组
    job = Quartz.JobBuilder.Create<UpdatecadJob>().Build();
     
    3.创建一个触发器  
    用于定义执行任务的间隔时间
     
    1  trigger = TriggerBuilder.Create()
    2                 .WithIdentity("TimeTrigger", "TimeGroup")
    3                 .WithSimpleSchedule(t => t.WithIntervalInHours(1).RepeatForever())
    4                 .Build();
    5  
    4.创建一个调度器  用于添加一组或多组的(任务与触发器)
    scheduler.ScheduleJob(job, trigger);
    

      

     
    5.开启或结束任务
      scheduler.Start();
    

      

    完整代码如下:
    新建JobScheduler类,通过构造函数初始化调度器工厂,通过start方法开启定时任务。
      
     1 //后台执行任务
     2     public class JobScheduler
     3     {
     4         //调度器工厂
     5         private static readonly ISchedulerFactory factory = null;
     6         //调度器
     7         private static readonly IScheduler scheduler = null;
     8         static JobScheduler()
     9         {
    10          
    11             //创建一个工厂
    12             factory = new StdSchedulerFactory();
    13             scheduler = factory.GetScheduler().Result;
    14             scheduler.Start();
    15         }
    16         public static void Start()
    17         {
    18             scheduler.GetJobGroupNames();
    19             IJobDetail job;
    20             ITrigger trigger;
    21             //创建任务
    22             job = Quartz.JobBuilder.Create<UpdatecadJob>().Build();
    23             //创建触发器  这里设置一小时
    24             trigger = TriggerBuilder.Create()
    25                 .WithIdentity("TimeTrigger", "TimeGroup")
    26                 .WithSimpleSchedule(t => t.WithIntervalInHours(1).RepeatForever())
    27                 .Build();
    28             //添加任务及触发器至调度器中
    29             scheduler.ScheduleJob(job, trigger);
    30             //启动
    31             scheduler.Start();
    32         }
    33     }
    调用:
    JobScheduler.Start();
    

      



    后记:可视化界面和cron定时表达式尚未详细说明
      
  • 相关阅读:
    JavaScript中的Date对象
    补零函数和随机数函数
    设置与获取自定义属性
    eval()
    获取DOM元素样式
    do{}while() 循环
    ++ 运算符
    switch 语句
    git
    webpack
  • 原文地址:https://www.cnblogs.com/ywkcode/p/11110126.html
Copyright © 2011-2022 走看看