zoukankan      html  css  js  c++  java
  • 定时执行任务

    首先  Install-Package Quartz;

    using System;
    using Quartz;
    using System.Collections.Specialized;
    using Quartz.Impl;
    using Common.Logging;
    
    namespace LisWms.Sch
    {
        public class Scheduler
        {
            private static Scheduler instance;
    
            private static Object locker = new Object();
    
            public static IScheduler scheduler;
    
            /// <summary>
            /// 创建Scheduler
            /// </summary>
            /// <returns></returns>
            public static Scheduler GetInstance()
            {
                lock (locker)
                {
                    if (instance == null)
                    {
                        instance = new Scheduler();
                    }
                }
                return instance;
            }
    
            private Scheduler()
            {
                //工厂方式创建 IScheduler接口
                ISchedulerFactory sf = new StdSchedulerFactory();
                scheduler = sf.GetScheduler();
            }
    
            public static void Start()
            {
                scheduler.Start();
            }
            /// <summary>
            /// 
            /// </summary>
            public static void Stop()
            {
                scheduler.Shutdown(true);
                instance = null;
            }
            /// <summary>
            /// 暂停所有动做
            /// </summary>
            public static void Pause()
            {
                scheduler.PauseAll();
            }
            /// <summary>
            /// 恢复所有动做
            /// </summary>
            public static void Resume()
            {
                scheduler.ResumeAll();
            }
            /// <summary>
            /// 添加多个job任务
            /// </summary>
            /// <param name="jobDetail"></param>
            /// <param name="trigger"></param>
            public static void AddJob(IJobDetail jobDetail, ITrigger trigger)
            {
                // 当Trigger认为应该触发的时候就会调用(实际上是Scheduler调用)job.execute方法了。    
           
                scheduler.ScheduleJob(jobDetail, trigger);
              
            }
            /// <summary>
            /// 删除相关的job任务
            /// </summary>
            /// <param name="jobKey"></param>
            /// <returns></returns>
            public static bool DeleteJob(JobKey jobKey)
            {
                return scheduler.DeleteJob(jobKey);
            }
    
        }
    }
    View Code

    如上 Scheduler 类

    设置 定时调度任务

     //初始化
    
                Scheduler.GetInstance();
              
                #region AppUserJob
                //==========AppUserJob===========
    
                IJobDetail AppUserJob = JobBuilder.Create<AppUserJob>()  //创建一个作业
                    .WithIdentity("AppUserJob", "lisWmsSyn")
                    .Build();
    
                ITrigger AppUserJobTri = TriggerBuilder.Create()
                                            .WithIdentity("AppUserJobTri", "lisWmsSyn")
                                            .StartNow()
                                            .WithSimpleSchedule(x => x         //触发时间,60秒一次。
                                                .WithIntervalInSeconds(60)
                                                .WithMisfireHandlingInstructionFireNow()
                                                .RepeatForever())              //不间断重复执行
                                            .Build();
                //帮助类
                HelpEvent help = new HelpEvent();
                help.SetMsgEvent -= new HelpEvent.SetMsg(AddMsg);
                help.SetMsgEvent += new HelpEvent.SetMsg(AddMsg);
                Scheduler.scheduler.Context.Put("HelpEvent", help);
    
    
    
                Scheduler.AddJob(AppUserJob, AppUserJobTri);      //把作业,触发器加入调度器。
                #endregion
    View Code

    所有的任务类都要继承 IJob接口 不要对 Execute重写

  • 相关阅读:
    Keras & Theano 输出中间层结果
    keras & tensorflow 列出可用GPU 和 切换CPU & GPU
    Visualizing CNN Layer in Keras
    [python]使用django快速生成自己的博客小站,含详细部署方法
    [JetBrains注册] 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法
    【python】pycharm常用配置快速入门。
    一道笔试题来理顺Java中的值传递和引用传递
    集群扩容的常规解决:一致性hash算法
    [面经]春季跳槽面筋总结 [2018年3月17]
    TestNG的简单使用
  • 原文地址:https://www.cnblogs.com/xuzai/p/4715275.html
Copyright © 2011-2022 走看看