C# QuartzHelper 封装Quartz 简化操作流程

本文介绍了在.NET中使用Quartz库创建、调度、管理和控制任务(Job)的方法,包括简单的定时任务、Cron表达式触发的任务以及暂停、恢复和启动调度的功能。
摘要由CSDN通过智能技术生成
 using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MPC.AFE.Controller.Service;

public static class QuartzHelper
{
    private static ISchedulerFactory scheduleFactory = null;
    private static IScheduler _scheduler = null;

    public static async Task InitAsync()
    {
        scheduleFactory = new StdSchedulerFactory();
        _scheduler = await scheduleFactory.GetScheduler();
    }


    public static async Task AddSimpleJobOfSecondAsync<T>(string jobName, string groupName, int second, Dictionary
    <string, object>param = null) where T : IJob
    {
        await AddSimpleJobAsync
        <T>(jobName, groupName, (x) => { x.WithIntervalInSeconds(second).RepeatForever(); }, param);
    }

    public static async Task AddSimpleJobOfMinuteAsync
            <T>(string jobName, string groupName, int minute, Dictionary
                <string, object>param = null) where T : IJob
    {
        await AddSimpleJobAsync
                    <T>(jobName, groupName, (x) => { x.WithIntervalInMinutes(minute).RepeatForever(); }, param);
    }

    public static async Task AddSimpleJobAsync
                        <T>(string jobName, string groupName, Action
                            <SimpleScheduleBuilder>action, Dictionary
                                <string, object>param = null) where T : IJob
    {
        var jobKey = new JobKey(jobName, groupName);

        if (await _scheduler.CheckExists(jobKey))
        {
            return;
        }

        var job = JobBuilder.Create
                                    <T>()
            .WithIdentity(jobKey)
            .Build();

        if (param != null && param.Count > 0)
        {
            foreach (string key in param.Keys)
            {
                job.JobDataMap.Put(key, param[key]);
            }
        }

        var trigger = TriggerBuilder.Create()

            .WithIdentity($"{jobName}Trigger", groupName)
            .WithSimpleSchedule(action)
            .Build();

        await _scheduler.ScheduleJob(job, trigger);
    }


    public static async Task AddJob
                                        <T>(string jobName, string groupName, string cronExpression) where T : IJob
    {
        var jobKey = new JobKey(jobName, groupName);

        if (await _scheduler.CheckExists(jobKey))
        {
            return;
        }

        var job = JobBuilder.Create
                                            <T>()
            .WithIdentity(jobKey)
            .Build();

        var trigger = TriggerBuilder.Create()
            .WithIdentity($"{jobName}Trigger", groupName)
            .WithCronSchedule(cronExpression)
            .Build();

        await _scheduler.ScheduleJob(job, trigger);
    }

    public static async Task DeleteJob(string jobName, string groupName)
    {
        var jobKey = new JobKey(jobName, groupName);

        if (!await _scheduler.CheckExists(jobKey))
        {
            return;
        }

        await _scheduler.DeleteJob(jobKey);
    }

    public static async Task PauseJob(string jobName, string groupName)
    {
        var jobKey = new JobKey(jobName, groupName);

        if (!await _scheduler.CheckExists(jobKey))
        {
            return;
        }

        await _scheduler.PauseJob(jobKey);
    }

    public static async Task ResumeJob(string jobName, string groupName)
    {
        var jobKey = new JobKey(jobName, groupName);

        if (!await _scheduler.CheckExists(jobKey))
        {
            return;
        }

        await _scheduler.ResumeJob(jobKey);
    }

    public static async Task StartAllJob()
    {
        await _scheduler.Start();
    }
}

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ou.cs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值