1. 程式人生 > >寫個QuartzHelper類

寫個QuartzHelper類

sch val gui readonly tar param and cnblogs dai

本文由[【小居工作室】原創,轉載請說明源地址:http://www.cnblogs.com/wjs5943283/p/7076178.html,感謝如鵬網老楊的技術教學和細心指導。特此說明!

Quartz.net(2.5.0)用起來感覺很麻煩,就寫個輔助類,先寫兩個方法,別的用到可再擴展,寫的不到之處,再請指出:

/// <summary>

    /// 定時器輔助類

    /// </summary>

    public static class QuartzHelper

    {

      private static readonly IScheduler Sched = new
StdSchedulerFactory().GetScheduler(); /// <summary> /// 基於CronScheduleBuilder,在某一時刻執行job /// </summary> /// <param name="jobType">Ijob實現類</param> /// <param name="builder">CronScheduleBuilder對象</param> /// <param name="jobName">
job名稱,不能重復</param> /// <param name="triggerKeyName">trigger名稱,不能重復</param> public static void CronScheduleQuartz(Type jobType, CronScheduleBuilder builder, string jobName=null, string triggerKeyName=null) { if (string.IsNullOrWhiteSpace(jobName)) { jobName
= Guid.NewGuid().ToString(); } if (string.IsNullOrWhiteSpace(triggerKeyName)) { triggerKeyName = Guid.NewGuid().ToString(); } JobDetailImpl jdBossReport = new JobDetailImpl(jobName, jobType); IMutableTrigger triggerBossReport = builder.Build(); triggerBossReport.Key = new TriggerKey(triggerKeyName); Sched.ScheduleJob(jdBossReport, triggerBossReport); } /// <summary> /// 基於CalendarIntervalScheduleBuilder,每隔多久執行一次job /// </summary> /// <param name="jobType">Ijob實現類</param> /// <param name="builder">CalendarIntervalScheduleBuilder對象</param> /// <param name="jobName">job名稱,不能重復</param> /// <param name="triggerKeyName">trigger名稱,不能重復</param> public static void CalendarIntervalQuartz(Type jobType, CalendarIntervalScheduleBuilder builder, string jobName = null, string triggerKeyName = null) { if (string.IsNullOrWhiteSpace(jobName)) { jobName = Guid.NewGuid().ToString(); } if (string.IsNullOrWhiteSpace(triggerKeyName)) { triggerKeyName = Guid.NewGuid().ToString(); } JobDetailImpl jdBossReport = new JobDetailImpl(jobName, jobType); IMutableTrigger triggerBossReport = builder.Build(); triggerBossReport.Key = new TriggerKey(triggerKeyName); Sched.ScheduleJob(jdBossReport, triggerBossReport); } /// <summary> /// 執行定時任務 /// </summary> public static void Start() { Sched.Start(); } }

調用方法:

  QuartzHelper.CalendarIntervalQuartz(typeof(MyJob1), CalendarIntervalScheduleBuilder.Create().WithInterval(3,IntervalUnit.Second), "myjob1", "t1");

            QuartzHelper.CronScheduleQuartz(typeof(MyJob2),CronScheduleBuilder.DailyAtHourAndMinute(9,41),"myjob2","t2" );

            QuartzHelper.CalendarIntervalQuartz(typeof(MyJob), CalendarIntervalScheduleBuilder.Create().WithInterval(2, IntervalUnit.Second));

            QuartzHelper.CronScheduleQuartz(typeof(MyJob1), CronScheduleBuilder.DailyAtHourAndMinute(9, 41));

            QuartzHelper.Start();

寫個QuartzHelper類