Quartz .Net 的简单使用

参考了:c# .net framework 4.5.2 , Quartz.NET 3.0.7 - runliuv - 博客园 (cnblogs.com)

https://www.cnblogs.com/personblog/p/11277527.html

Quartz.NET 作业调度(一):Test - 简书

自己要轮询的任务:

cs 复制代码
using log4net;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;


namespace WzsrmyyApi.QuartzTask
{
    [DisallowConcurrentExecution]
    public class ReportJob : IJob
    {

        public Task Execute(IJobExecutionContext context)
        {

            return Task.Run(() =>
            {

                foo();

            });

        }

        public static readonly ILog logger = LogManager.GetLogger("SendMsgJob");
        public void foo()
        {
            BigDataSupervisionBll bll = new BigDataSupervisionBll();
            BigDataSupervisionOtherBll otherBll = new BigDataSupervisionOtherBll();
            try
            {
                var dic = bll.SplitCount(otherBll.GetChargesRecordOneDay());
                int dictNum = 0; string type = "charges_record";
                for (int i = dictNum; i < dic.Count; i++)
                {
                    string data = dic[dictNum];
                    var res = bll.PostData(type, data);

                    logger.Info("日志");
                }
            }
            catch (Exception ex)
            {
                //日志
                logger.Info("error " + ex);
            }

        }


    }
}

轮询的任务的建立

cs 复制代码
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WzsrmyyApi.QuartzTask
{
    public class ReportJobScheduler
    {
        public static async void Start()
        {
            try
            {
                string thisJob = "ReportJob";

                string groupName = "gp" + thisJob;
                string jobName = "job" + thisJob;
                string triggerName = "trigger" + thisJob;

                // 创建作业调度池
                ISchedulerFactory factory = new StdSchedulerFactory();
                IScheduler scheduler = await factory.GetScheduler();

                // 创建作业
                IJobDetail job = JobBuilder.Create<ReportJob>()
                  .WithIdentity(jobName, groupName)
                  .Build();

                // 创建触发器,
                ITrigger trigger = TriggerBuilder.Create()
                  .WithIdentity(triggerName, groupName)
                  .StartNow()
                  .WithCronSchedule("0 0 22 ? * * ")//每天晚上十点
                  .Build();
                //.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()//每10s执行一次

                // 加入到作业调度池中
                await scheduler.ScheduleJob(job, trigger);

                // 开始运行
                await scheduler.Start();
            }
            catch (Exception ex)
            {
                //日志
            }

        }

    }
}

最后在程序启动的时候进行注册:

cs 复制代码
protected void Application_Start()
        {
            log4net.Config.XmlConfigurator.Configure();//系统日志配置

            QuartzTask.ReportJobScheduler.Start();//

            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

以上就是简单的代码使用 。Quartz.net的使用可以通过两种方式调用:一是通过代码的方式,而是通过配置文件的方式;

详细些的可以参考:Quartz.Net详解-CSDN博客

相关推荐
范小多5 小时前
C#获取和风天气数据
java·开发语言·python·c#
z落落6 小时前
C# Task WaitAll、WaitAny、WhenAll、WhenAny
开发语言·c#
玖玥拾7 小时前
C# 语言进阶(十四)Unity UI界面开发 + 网络消息联动
服务器·开发语言·网络·ui·unity·c#·游戏引擎
czhc11400756639 小时前
712:Atta. cursor;ToggleButton
c#
AI行业学习9 小时前
OpenAI Codex 完整下载 & 安装指南(2026最新版)
linux·开发语言·python·.net·notepad++
玖玥拾9 小时前
C# 语言进阶(十三)网络 DLL 库分层设计
服务器·开发语言·网络·网络协议·c#
雪靡10 小时前
WPF PerMonitorV2 下的跨窗口问题
c#·wpf
苍狼唤10 小时前
SQL+C# 增删改查(练习)
数据库·sql·c#
非酋讨厌21 小时前
.NET 11 Preview 4 正式发布:Runtime-Async 全面启用、Process API 大幅扩展
.net