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博客

相关推荐
longxiaozhang61 天前
C# Array类:数组其实没那么难
开发语言·c#
longxiaozhang61 天前
C#运算符重载:让对象也能使用“加减乘除”
开发语言·c#
花落人散处1 天前
C# 核心编程知识点总结:网络编程、委托与事件、异步编程与LINQ
c#
fl1768312 天前
基于C#WPF实现的内存加速球清理类似360加速球内存清理
开发语言·c#·wpf
CoderIsArt2 天前
OPC UA 完整介绍、官网、C# 简单使用
开发语言·c#
界面开发小八哥2 天前
界面控件DevExpress XAF v26.1新版亮点——AI Agent Skills
ai·c#·跨平台·devexpress·ui开发·xaf
csdn_aspnet2 天前
C# 高效便利的处理数据
开发语言·windows·c#
淡海水2 天前
03-02-线性-List-T-动态数组布局-扩容与操作成本
数据结构·windows·c#·list·编译·clr·机器码
csdn_aspnet2 天前
C# 在逗号分割的字符串中判断是否包含指定字符
c#·正则·linq·string·regex·contains
宝桥南山2 天前
Blazor Web Assembly - 体验一下Authentication State从Server共享给Client
microsoft·微软·c#·asp.net·.net·.netcore