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

相关推荐
江沉晚呤时7 小时前
在 C# 中调用 Python 脚本:实现跨语言功能集成
python·microsoft·c#·.net·.netcore·.net core
Oberon7 小时前
Avalonia硬配.NET Framework 4.8
c#·.net·avalonia·.net framework
xiaopengbc8 小时前
MSVCP*.dll、vcruntime*.dll缺失或损坏,以及.NET Framework相关问题,解决办法
.net
xiaopengbc8 小时前
.NET Framework 安装失败及异常情况 常用处理方法
.net·.net修复
喵叔哟10 小时前
3. 【Blazor全栈开发实战指南】--Blazor是什么?为什么选择Blazor?
c#·.netcore
钢铁男儿12 小时前
C# 接口(接口可以继承接口)
java·算法·c#
小码编匠20 小时前
C# 的西门子数控系统 OPCUA 数据采集开发从零入门
后端·数据分析·c#
孜然卷k20 小时前
C#项目 在Vue/React前端项目中 使用使用wkeWebBrowser引用并且内部使用iframe网页外链 页面部分白屏
前端·vue.js·react.js·c#
专注VB编程开发20年21 小时前
C# VB.NET多进程-管道通信,命名管道(Named Pipes)
开发语言·c#·.net
百锦再21 小时前
Rider 全面解析:跨平台 .NET IDE 的核心技术与高效实践指南
linux·ide·.net·sdk·core·rider