zoukankan      html  css  js  c++  java
  • 定时任务 winform开发

      在项目中我们经常遇到与时间结合的无限或者有限轮回的任务。例如每月一号统计工作量,基本这种情况,都会是设置定时任务,定时执行。好了,下面就记录一下定时任务的开发吧。

      首先描述一下开发思路:

      建立一个winform控制台程序,手动触发定时任务的开始,然后执行。项目中需要引用的dll:

    好了,开始上代码:

        public class QuartRunner
        {
           
    
            /// 
            /// 调度器工厂
            /// 
            ISchedulerFactory factory;
            /// 
            /// 调度器
            /// 
            public static IScheduler scheduler;
    
            /// 
            /// 输出任务情况
            /// 
            public static Form1 msgInfos = new Form1();
    
            #region  方法
    
            public QuartRunner(Form1 from)
            {
              
                from = msgInfos;
            }
    
            /// 
            /// 定时任务开启
            /// 
            public void Start()
            {
              
                factory = new StdSchedulerFactory();
                scheduler = factory.GetScheduler();
                Rank("0 25 13 ? * *");
                LookContractLog(1);
    
            }
          //指定时间点触发任务
            public void Rank(string cronExpression)
            {
                IJobDetail job = JobBuilder.Create().Build();
                ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                    .WithCronSchedule(cronExpression)
                    .Build();
                scheduler.ScheduleJob(job, trigger);
                scheduler.Start();
            }
            //每几分钟跑一次服务
            public void LookContractLog(int minutes)
            {
                IJobDetail job = JobBuilder.Create().Build();
                ITrigger trigger = TriggerBuilder.Create()
                     .StartNow()
                     .WithSimpleSchedule(x => x.WithIntervalInMinutes(minutes).RepeatForever())
                     .Build();
                scheduler.ScheduleJob(job, trigger);
                scheduler.Start();
            }
    
    
            #endregion
    
    
    
            #region  定时任务参考参数
    
            /***定点任务执行
                   * 0 0 12 * * ? 每天12点触发 
                   0 15 10 ? * * 每天10点15分触发 
                   0 15 10 * * ? 每天10点15分触发 
                   0 15 10 * * ? * 每天10点15分触发 
                   0 15 10 * * ? 2005 2005年每天10点15分触发 
                   0 * 14 * * ? 每天下午的 2点到2点59分每分触发 
                   0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 
                   0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发) 
                   0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发 
                   0 10,44 14 ? 3 WED     3月分每周三下午的 2点10分和2点44分触发 (特殊情况,在一个时间设置里,执行两次或两次以上的情况) 
                   0 59 2 ? * FRI    每周5凌晨2点59分触发; 
                   0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发 
                   0 15 10 15 * ? 每月15号上午10点15分触发 
                   0 15 10 L * ? 每月最后一天的10点15分触发 
                   0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发 
                   0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发 
                   0 15 10 ? * 6#3 每月的第三周的星期五开始触发 
                   0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次 
                   0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)
    
       **/
    
            #endregion
        }
    

    上面的两个细节类(RankQuartz,LookContractQuartz),下面展示一个代码:主要是继承IJob类,并且重写方法Execute

     public class RankQuartz : IJob
        {
    
    
            public RankQuartz()
            {
               
            }
    
            public void Execute(IJobExecutionContext context)
            {
                try
                {
                  
                     //具体细节的处理
                }
                catch (Exception ex)
                {
                    _Logger.Logger_Info($"{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")}:执行排行活动任务时,出现问题:{ex.Message} ");
                }
            }
    }
    
    
    
    

    想要调用,就直接实例化QuartRunner类就可以了

     以上,over,以后争取用一下网上的统一管理定时任务的源码,学习一下。

  • 相关阅读:
    DNS智能解析的搭建与配置
    使用dnsmasq快速搭建内网DNS
    安装Fedora 21工作站后要做的10件事情
    MySQL + KeepAlived + LVS 单点写入主主同步高可用架构实验
    SOC-EDS之DS5安装和破解
    vs2015安装与卸载
    opencv实现的图像缩放
    基于Haar+Adaboost的人脸识别
    win10+python3.7+Anaconda3+CUDA10.0+cuDNN7.5+tensorflow_gpu1.13.1+opencv4.1.0 教程(最新)
    图片合成视频
  • 原文地址:https://www.cnblogs.com/kekelele/p/9972954.html
Copyright © 2011-2022 走看看