- using Quartz;
- using Quartz.Impl;
- using Quartz.Impl.Matchers;
- using Quartz.Logging;
- using System;
- using System.Collections.Generic;
- using System.Collections.Specialized;
- using System.Data.Entity.Migrations;
- using System.Linq;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Transactions;
- using System.Web;
- using WebApplication3.Models;
- using WebApplication3.Service;
-
- namespace WebApplication3
- {
- public static class QuartzHelper
- {
- public static async Task RunProgramRunExample()
- {
- try
- {
- // Grab the Scheduler instance from the Factory
- NameValueCollection props = new NameValueCollection
- {
- { "quartz.serializer.type", "binary" }
- };
- StdSchedulerFactory factory = new StdSchedulerFactory(props);
- IScheduler scheduler = await factory.GetScheduler();
-
- // and start it off
- await scheduler.Start();
-
- // define the job and tie it to our HelloJob class
- IJobDetail job = JobBuilder.Create<HelloJob>()
- .WithIdentity("job1", "group1")
- .Build();
-
- // Trigger the job to run now, and then repeat every 10 seconds
- ITrigger trigger = TriggerBuilder.Create()
- .WithIdentity("trigger1", "group1")
- //将在以后的整点触发
- .StartAt(DateBuilder.EvenHourDate(null))
- //.StartAt(DateBuilder.FutureDate(1, IntervalUnit.Day))
- //.StartNow()
- //.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(19, 36))//每天几点几分触发
- .WithSimpleSchedule(x => x
- .WithIntervalInHours(1)//每1小时触发
- //.WithIntervalInMinutes(1)//每分钟
- //.WithIntervalInSeconds(10)
- .RepeatForever())
- .Build();
-
- ///监听任务
- //scheduler.ListenerManager.AddJobListener(new MyJobListener(), KeyMatcher<JobKey>.KeyEquals(new JobKey("job1", "group1")));
-
- scheduler.ListenerManager.AddJobListener(new MyJobListener(), GroupMatcher<JobKey>.AnyGroup());
-
- // Tell quartz to schedule the job using our trigger
- await scheduler.ScheduleJob(job, trigger);
-
- // and last shut down the scheduler when you are ready to close your program
- //await scheduler.Shutdown();
- }
- catch (SchedulerException se)
- {
- Console.WriteLine(se);
- }
- }
- }
- public class MyJobListener : IJobListener
- {
- public string Name
- {
- get
- {
- return "监听任务";
- }
- }
- public Task JobToBeExecuted(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
- {
- return Task.Run(() =>
- {
- JobToBeExecuted();
- });
- }
-
- public Task JobExecutionVetoed(IJobExecutionContext context, CancellationToken cancellationToken = default(CancellationToken))
- {
- return Task.Run(() =>
- {
- JobExecutionVetoed();
- });
- }
-
- public Task JobWasExecuted(IJobExecutionContext context, JobExecutionException jobException, CancellationToken cancellationToken = default(CancellationToken))
- {
- return Task.Run(() =>
- {
- JobWasExecuted();
- });
- }
- /// <summary>
- /// 执行前
- /// </summary>
- public void JobToBeExecuted()
- {
- }
- /// <summary>
- /// 触发失效
- /// </summary>
- public void JobExecutionVetoed()
- {
- string path4 = System.AppDomain.CurrentDomain.BaseDirectory;
- new Common.CommonFun().WriteLog("位置:QuartzHelper,定时器触发失效!", "autoUpdate");
- }
- /// <summary>
- /// 触发完成
- /// </summary>
- public void JobWasExecuted()
- {
- }
- }
- /// <summary>
- /// 定时任务
- /// </summary>
- public class HelloJob : IJob
- {
- public async Task Execute(IJobExecutionContext context)
- {
- await Task.Run(() =>
- {
-
- });
- }
- }
- }
记录Quartz的基本使用
看月亮的向月葵 发布了7 篇原创文章 · 获赞 2 · 访问量 6323 私信 关注