C#测试控制台程序调用Quartz.NET的基本用法

  Quartz.Net是常用的任务调用框架之一,既能在客户端程序中使用,也支持在网页程序后台调用。本文结合参考文献4中的示例代码学习其在控制台程序中的基本用法。
  VS2022新建控制台项目,在Nuget包管理器中搜索并安装Quartz包,如下所示:

在这里插入图片描述
  Quartz.NET最基本的三个对象,调度器、触发器及作业。其中:
  1)调度器(Scheduler):用于保存并运行作业;
  2)触发器(Trigger):定义作业的运行规则,一次性、周期性调用等;
  3)作业(Job):需要一次性或周期性执行的操作,需要集成IJob接口,实现其中的Execute函数,从参考文献4的示例来看,一个作业匹配一个触发器,调度器支持调度带不同触发器的作业集合。

  定义MyJob 作业类,支持生成随机数并计算其和后打印到控制台,代码如下所示:

public class MyJob : IJob
{public Random m_random = new Random();public Task  Execute(IJobExecutionContext context){int a = m_random.Next(0,100);int b = m_random.Next(0, 100);Console.WriteLine($"{DateTime.Now.ToString()}:{a} + {b} = {a + b}");return default;}
}

  对着参考文献4,创建调度器示例:/font>

StdSchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = await sf.GetScheduler();

  如果是一次性任务且立即执行,则按如下代码执行即可,运行效果如下所示:

IJobDetail job = JobBuilder.Create<MyJob>().Build();
ITrigger trigger = TriggerBuilder.Create().Build();await sched.ScheduleJob(job, trigger);
await sched.Start();Console.ReadLine();await sched.Shutdown(true);

在这里插入图片描述

  如果是一次性任务但需延后执行,则可在创建触发器时调用StartAt指定触发时间,但根据函数说明,也不是百分百按时执行,取决于调度器调度设置。

ITrigger trigger = TriggerBuilder.Create().StartAt(runTime).Build();

在这里插入图片描述
  如果是简单的、周期性地作业,则可在创建触发器时调用WithSimpleSchedule函数进行设置,从参考文献4的示例2来看(02_SchedulingCapabilitiesUsingSimpleTriggers),可以设置多种形式的调用频次(示例如下所示。SimpleScheduleBuilder类型中支持的运行规则不少,详细的介绍请见参考文献1、4和5。

// 设置每隔十秒调用一次,重复调用20次
ITrigger trigger = TriggerBuilder.Create().StartAt(runTime).WithSimpleSchedule(x => x.WithIntervalInSeconds(10).WithRepeatCount(20)).Build();
// 还支持按小时、分钟、自定义时间间隔调用
WithIntervalInHours
WithIntervalInMinutes
WithInterval//支持快捷函数
RepeatHourlyForever//每小时调用一次,不限次数
RepeatMinutelyForever//每分钟调用一次,不限次数
RepeatSecondlyForever//每秒调用一次,不限次数
RepeatHourlyForTotalCount//每小时一次,指定调用次数
RepeatMinutelyForTotalCount//每分钟一次,指定调用次数
RepeatSecondlyForTotalCount//每秒调用一次,指定调用次数

  创建作业及触发器实例过程中还支持调用WithIdentity函数设置名称及分组,以便在调度器调度多个作业时加以区分及控制。参考文献4的示例2演示了同时调度(02_SchedulingCapabilitiesUsingSimpleTriggers)2个分组近10个作业的示例,还包括重新调度作业的示意,有兴趣的可以直接去学习及参考代码。

参考文献:
[1]https://github.com/quartznet/quartznet
[2]https://blog.csdn.net/liyou123456789/article/details/126575055
[3]https://blog.csdn.net/u014708596/article/details/132297020
[4]https://github.com/quartznet/quartznet/tree/main/src/Quartz.Examples
[5]https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaWeb笔记_JSPEL

一.JSP相关技术 1.1 JSP由来 当我们需要向页面输出大量的HTML代码的时候,我们需要通过response对象写多次来输出HTML代码 response.getWriter().write("<font>文本</font>"); 页面的展示和servlet密不可分,不利于后期代码维护,因此推出一种可以…

npm下载pnpm

一、提供node_global和node_cache的文件夹 若不存在&#xff0c;可自行新建文件夹 二、配置环境变量 配置NODE_PATH变量&#xff1a; 配置Path变量&#xff1a; 三、执行cmd指令 npm config set prefix "D:\Configure\nodejs\node_global" npm config set cache &…

公司邮箱一般是什么邮箱

公司邮箱一般是什么邮箱呢&#xff1f;公司邮箱是企业官方通信工具&#xff0c;体现专业形象&#xff0c;提高协作效率。选择时需考虑安全性、功能集成、性价比和技术支持。Zoho邮箱因简洁界面、丰富协作工具和出色安全性能受好评&#xff0c;提供多种套餐选择。 一、公司邮箱…

编写SpringBoot的自定义starter包

starter项目 先来看一下Starter的官方解释&#xff1a; Spring Boot Starter 是一种方便的依赖管理方式&#xff0c;它封装了特定功能或技术栈的所有必要依赖项和配置&#xff0c;使得开发者可以快速地将这些功能集成到Spring Boot项目中。Spring Boot官方提供了一系列的Star…

接入百度文心一言API教程

然后&#xff0c;编辑文章。点击AI识别摘要&#xff0c;然后保存即可 COREAIPOWER设置 暂时只支持经典编辑器.古腾堡编辑器等几个版本后支持.在比期间,你可以自己写点摘要 摘要内容 AL识别摘要 清空 若有收获&#xff0c;就点个赞吧 接入文心一言 现在百度文心一言&…

vsftpd搭建FTP服务器 - 虚拟用户

命令记录 $ sudo apt install vsftpd db-util $ sudo nano /etc/vsftpd.conf $ sudo nano /etc/vsftpd/vsftpd-virtual-users.txt $ sudo db_load -T -t hash -f /etc/vsftpd/vsftpd-virtual-users.txt /etc/vsftpd/vsftpd-virtual-users.db ls /etc/vsftpd/vsftpd-virtual-us…

IDEA的pom.xml显示ignored 的解决办法

问题&#xff1a; idea中创建Maven module时&#xff0c;pom.xml出现ignored。 原因&#xff1a; 相同名称的module在之前被创建删除过&#xff0c;IDEA会误以为新的同名文件是之前删除掉的&#xff0c;将这个新的module的pom.xml文件忽略掉显示ignored. 解决&#xff1a; 在…

看 Unity 组件的源码 —— ILSpy

ILSpy 是开源的 .NET 程序集浏览器和解编译器。 下载 ILSpy ILSpy Github 地址&#xff1a;icsharpcode/ILSpy: .NET Decompiler with support for PDB generation, ReadyToRun, Metadata (&more) - cross-platform! (github.com) 它有 Release 包可以下载 也提供 IDE 的…

STM32工业物联网系统教程

目录 引言环境准备工业物联网系统基础代码实现&#xff1a;实现工业物联网系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;工业监测与优化问题解决方案与优化收尾与总结 1. 引言 工业物联网&#xff08…

K210视觉识别模块学习笔记7:多线程多模型编程识别

今日开始学习K210视觉识别模块: 图形化操作函数 亚博智能 K210视觉识别模块...... 固件库: canmv_yahboom_v2.1.1.bin 训练网站: 嘉楠开发者社区 今日学习使用多线程、多模型来识别各种物体 这里先提前说一下本文这次测试实验的结果吧&#xff1a;结果是不太成…

Python实现websocket连接服务器报rejected WebSocket connection: HTTP 401

1. websockets报HTTP 401解决办法 代码如下&#xff1a; #!/usr/bin/env python import asyncio import websockets import requestsuri ws://192.168.20.167/websocket msg {"type":6,"param":{"businessType":3,"cmd":1,"f…

线性代数|机器学习-P25线性规划和两人零和博弈

文章目录 0. 概述1. 线性规划问题1.1 定义1.2 举例 2. 线性规划中的对偶问题3. 最大流 - 最小割问题4. 两人零和博弈 MIT教授教学视频&#xff0c;讲得比较泛&#xff0c;需要另外学习很多知识补充 0. 概述 线性规划[LP]问题 线性规划是问题为线性求最值&#xff0c;约束也是求…

自动驾驶-机器人-slam-定位面经和面试知识系列01之常考公式推导(01)

李群李代数扰动bundle adjustment 这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客也会同步更新&#xff0c;全网…

《计算机网络》(学习笔记)

目录 一、计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 1.1.2 计算机网络的组成 1.1.3 计算机网络的功能 1.1.4 电流交换、报文交换和分组交换 1.1.5 计算机网络的分类 1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型 1.2.1 计算机…

STM32F0-寄存器ADC配置指南

目录 输入方式&#xff1a; 模拟看门狗功能&#xff1a; ADC中断 配置一个Demo 设置时钟 自校准 通道选择 采样时间选择 转换模式选择 断续模式 启动转换 软件触发 外部触发 转换结束 关于DMA 模拟看门狗 ​编辑ADC数据位置​编辑 在STM32F中&#xff0c;ADC可…

AV1技术学习:Loop Restoration Filter

环路恢复滤波器&#xff08;restoration filter&#xff09;适用于64 64、128 128 或 256 256 像素块单元&#xff0c;称为 loop restoration units (LRUs)。每个单元可以独立选择是否跳过滤波、使用维纳滤波器&#xff08;Wiener filter&#xff09;或使用自导滤波器&#…

pyenv-win | python版本管理,无需卸载当前版本

系统&#xff1a;windows&#xff0c;且已安装git。 使用 pyenv-win 在Windows中管理多个python版本&#xff0c;而无需卸载当前版本。安装步骤如下&#xff1a; 安装 pyenv-win 1. 安装 Git 和 pyenv-win: git clone https://github.com/pyenv-win/pyenv-win.git %USERPRO…

Word 导入导出

在实际的开发过程中&#xff0c;也会遇到导入导出的功能&#xff0c;今天就简单的做一下总结。 1.需求&#xff1a;将下面word 数据导入到数据库并进行存储 在Controller中 RequestMapping(value "/ImportWord")public RawResponseBodyObject ImportWord(HttpServl…

深入解析Linux目录结构及其功能

深入解析Linux目录结构 Linux 系统的目录结构采用层次化设计&#xff0c;从根目录 / 开始逐级扩展&#xff0c;了解和掌握这些目录的作用和内容有助于我们更好地管理和维护系统。本文将深入解析每个常见目录的功能&#xff0c;并提供相关命令和示例。 目录结构概览 根目录 / …

【BUG】已解决:ERROR: No matching distribution found for PIL

ERROR: No matching distribution found for PIL 目录 ERROR: No matching distribution found for PIL 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0…