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

相关推荐
Chen—LSN11 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
淡海水14 小时前
00-Unity和C#的GC剖析与对比-全篇导览
unity·c#·游戏引擎·gc
fogota14 小时前
C# `string.Join` 处理 `List<int>`
windows·c#
Behavior17 小时前
Unity 手游动态更换 App 图标 — Android 与 iOS 双端技术方案
c#·unity3d·游戏开发
周杰伦fans17 小时前
构建真正智能的CAD AI绘图代理
开发语言·人工智能·c#
UIU11421 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
CSharp精选营1 天前
我用 ASP.NET Core 做了个水稻病虫害检查系统
c#·毕业设计·.net core·码农刚子
唐青枫1 天前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
下页、再停留1 天前
【C#桌面客户端系列学习-2】在原来窗口基础上打开新窗口
c#·visual studio
Behavior1 天前
Unity 手游 iOS Deep Link 唤醒全流程:从 URL Scheme / Universal Links 到 C# 层参数投递
c#·unity3d·游戏开发