我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#定时任务框架Quartz.NET介绍与用法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#定时任务框架Quartz.NET介绍与用法

什么是定时任务?

最近恰巧有类似的需求, 需要做一个应用程序服务, 每天定时给服务器上传采集的数据。

在没有任务框架的使用前提下, 如果我们想要实现类似的需求,可以自己写一个计时器, 然后24小时运行,达到指定的时间就运行。但是这样不仅扩展性差, 而且不易于维护。

在定时任务这块, 也有非常的多的框架支持,开箱即用, 那么下面将主要介绍一下Quartz.NET框架

Github

Quartz.NET介绍

Quartz.NET是一个Github开源项目,用于创建一个免费商业用途的作业调度框架。

注:支持 .NET Core/.NET Standard 2.0 和 .NET 框架 4.6.1 及更晚版本。

Quartz.NET入门

在我们使用定时任务框架的之前, 首先我们需要确定的是, 它大概具备哪些内容。

  • 灵活的指定某项任务
  • 灵活的启动时间配置
  • 传递参数并且监听

了解了这些基础概念之后, 我们便开始学习如何在Quartz.NET当中使用这些功能。

1.创建一个任务

任务是一个抽象的概念, 实际来说它应该指的是某种任务, 例如: 想要每3秒输入一个字符串, 那么我们就可以这样做。

  • 下面演示创建了一个类, 它继承于IJob接口, 实现了Execute方法, 任务就是输出一个字符串。
    public class TestJob : IJob
    {
        public async Task Execute(IJobExecutionContext context)
        {
            await Console.Out.WriteLineAsync($"{DateTime.Now}:Hello!");
        }
    }
  • 创建任务
            //创建一个工作
            IJobDetail job = JobBuilder.Create<TestJob>()
             .WithIdentity("TestJob", "Test")
            .Build();

2.配置任务的参数

为任务配置一个触发条件及相关的参数。当该配置的参数一旦达到了条件, 上面的任务将被触发。

            //创建一个触发条件
            ITrigger trigger = TriggerBuilder.Create()
               .WithIdentity("TestJobTrigger", "Test")
               .WithSimpleSchedule(x =>
               {
                   x.WithIntervalInSeconds(3).RepeatForever();
               })
               .Build();

3.启动任务

创建一个任务调度器, 将任务和配置参数添加到调度器当中。

            StdSchedulerFactory factory = new StdSchedulerFactory();
            //创建任务调度器
            IScheduler scheduler = await factory.GetScheduler();
            //启动任务调度器
            scheduler.Start();  

            //将创建的任务和触发器条件添加到创建的任务调度器当中
            scheduler.ScheduleJob(job, trigger);

4.实际效果

在上面的代码中,我们创建了一个任务输出一段字符串, 然后为该任务创建了一个配置, 每3秒执行一次, 那么实际效果会每间隔3秒输出:

更多配置

  • 特定时间触发,重复触发,单次触发, 触发次数,开始时间, 结束时间。 这些在框架当中都有该功能

  • 触发器表达式 ,例如: 每周一上午, 或每周一、周三、周五等等

    下面是一些表达式及其含义的示例示例 1 - 创建每 5 分钟触发一次的触发器的表达式

"0 0/5 * * * ?"

示例 2 - 创建每 5 分钟触发一次的触发器的表达式,在分钟后 10 秒(即上午 10:00:10、上午 10:05:10 等)。

"10 0/5 * * * ?"

示例 3 - 用于创建触发器的表达式,该触发器在每个星期三和周五的 10:30、11:30、12:30 和 13:30 触发。

"0 30 10-13 ? * WED,FRI"

示例 4 - 创建触发器的表达式,在每月 5 日到 20 日上午 8 点到上午 10 点之间每半小时触发一次。请注意,触发器不会于上午 10:00 触发,只是在 8:00、8:30、9:00 和 9:30

"0 0/30 8-9 5,20 * ?"

点击查看更多触发器表达式

  • 监听器: 可以检测你的任务执行状态: 是否工作, 是否错误,是否已完成等

关于具体的使用方法, 在文档中有详细的介绍:

查看Quartz.NET文档

到此这篇关于C#定时任务框架Quartz.NET介绍与用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#定时任务框架Quartz.NET介绍与用法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring-Task定时任务的使用介绍

目前springboot应用广泛,因此对于spring-task直接基于springboot框架介绍,不涉及xml配置。本文直接介绍spring-task的使用方法,需要的可以参考一下
2022-11-13

Java Elastic-Job分布式定时任务使用方法介绍

xxl-job 通过一个中心式的调度平台,调度多个执行器执行任务,调度中心通过 DB 锁保证集群分布式调度的一致性,这样扩展执行器会增大 DB 的压力,然而大部分公司的任务数,执行器并不多;xxl-job 提供了非常好用的监控页面甚至还有任务失败的邮件告警功能
2023-01-16

详解定时任务框架Quartz的使用

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,本文就来带大家聊聊它的具体使用
2023-02-13

springboot整合quartz定时任务框架的方法是什么

今天小编给大家分享一下springboot整合quartz定时任务框架的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下
2023-06-26

web分布式定时任务调度框架怎么使用

这篇文章主要讲解了“web分布式定时任务调度框架怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web分布式定时任务调度框架怎么使用”吧!一、业务背景1.1 为什么需要使用定时任务调度
2023-06-04

怎么使用golang定时任务框架修改数据库

使用Golang定时任务框架修改数据库,你可以按照以下步骤进行操作:1. 导入所需的包:goimport ("github.com/robfig/cron""database/sql"_ "github.com/go-sql-driver/
2023-10-20

java中常用的定时任务框架单体是怎样的

本篇文章为大家展示了java中常用的定时任务框架单体是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Timer+TimerTask这是jdk自带的java.util.Timer类,这个类允
2023-06-22

阿里云ecs授时服务的详细介绍与使用方法

本文将详细介绍阿里云ecs授时服务,包括服务的定义、功能、使用方法以及相关的案例应用等。授时服务介绍:阿里云ecs授时服务,是阿里云提供的一个时间同步服务,可以帮助用户将本地时间与阿里云的时间保持一致。它提供了一种简单且可靠的方式,让用户能够获取到准确的时间信息。服务功能:实时时间同步:阿里云ecs授时服务可以实
阿里云ecs授时服务的详细介绍与使用方法
2024-01-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录