c#之quartz任务调度的使用

 

这里讲下,quartz这种任务调度程序的简单使用html

这是使用的quartz的3.x 版本c#

2.x 版本与此稍有区别,能够在网上查看2.x版本教程async

使用语言为c#学习

 

quartz的使用分为几个步骤ui

  1. 建立一个ISchedulerFactory,而后而且获取 Scheduler
  2. 启动 Scheduler
  3. 建立 job 任务
  4. 建立 trigger 触发器
  5. 使用触发器规划执行任务( Tell quartz to schedule the job using our trigger)

其中2步骤也能够放到步骤5后面 spa

 

另外,别忘记在nuget管理器中引入quartz.net

 

 

代码以下code

class Program
    {
        /// <summary>
        /// 入口程序
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Run();
            Console.ReadKey();
        }

        /// <summary>
        /// 任务调度的使用过程
        /// </summary>
        /// <returns></returns>
        public async static Task Run()
        {
            // 1.建立scheduler的引用
            ISchedulerFactory schedFact = new StdSchedulerFactory();
            IScheduler sched = await schedFact.GetScheduler();

            //2.启动 scheduler
            await sched.Start();

            // 3.建立 job
            IJobDetail job = JobBuilder.Create<SimpleJob>()
                    .WithIdentity("job1", "group1")
                    .Build();

            // 4.建立 trigger
            ITrigger trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())
                .Build();

            // 5.使用trigger规划执行任务job
            await sched.ScheduleJob(job, trigger);
        }

    }
    


    /// <summary>
    /// 任务
    /// </summary>
    public class SimpleJob : IJob
    {
        public virtual Task Execute(IJobExecutionContext context)
        {
            return Console.Out.WriteLineAsync($"job工做了 在{DateTime.Now}");
        }
        
    }

 

运行程序,效果图以下:htm

每5秒执行一次blog

 

 另外,在实际项目使用中,能够进行把上面步骤拆开,封装进行使用

例如,能够把步骤1,步骤2封装到一块儿,即用来产生 scheduler 

把 步骤3,步骤4,步骤5 封装到一块儿,用来给不一样的任务 scheduler(至关于注册不一样的 job ,trigger)

 

另外,还有更多的quartz的用法

这里附上继续学习网址:

quartz学习

相关文章
相关标签/搜索