吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1987|回复: 3
收起左侧

[其他转载] [Net分享] Quartz作业调度框架

[复制链接]
迷恋自留地 发表于 2021-3-15 14:03

1 什么是Quartz.NET?

Quartz是一个功能齐全的开源作业调度系统,可以与几乎任何其他软件系统集成或一起使用。

2 为什么需要Quartz.NET?

.NET Framework通过System.Timers.Timer类具有“内置”计时器功能-为什么有人使用Quartz而不是这些标准功能?

原因有很多!这里有一些:

计时器没有持久性机制。
计时器的时间安排不灵活(只能设置开始时间和重复间隔,没有基于日期,一天中的时间等信息)。
计时器不使用线程池(每个计时器一个线程)
计时器没有真正的管理方案-您必须编写自己的机制以能够按名称记住,组织和恢复任务等。

3 如何使用Quartz.NET?

首先,安装Quartz

Quartz

在这里插入图片描述
//新建HelloJob类,并继承IJob

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Quartz;

namespace ConsoleApp2
{
    public class HelloJob : IJob
    {
        public Task Execute(IJobExecutionContext context)
        {
            //需要执行的任务,到后面需要封装
            Console.WriteLine("Hello " + DateTime.Now);
            return Task.CompletedTask;
        }
    }
}

在这里插入图片描述
最后,实例化并启动调度程序,并调度要执行的作业:

using System;
using System.Threading.Tasks;
using Quartz;
using Quartz.Impl;

namespace ConsoleApp2
{
    class Program
    {
        static async Task Main(string[] args)
        {
            Console.WriteLine("开始调度!");

            //1、创建一个调度
            var factory = new StdSchedulerFactory();
            var scheduler = await factory.GetScheduler();
            await scheduler.Start();

            //2、创建一个任务
            var job = JobBuilder.Create<HelloJob>()
                .WithIdentity("job1", "group1")
                .Build();

            //3、创建一个触发器
            var trigger = TriggerBuilder.Create()
                .WithIdentity("trigger1", "group1")
                .WithCronSchedule("0/5 * * * * ?")     //5秒执行一次
                .Build();

            await scheduler.ScheduleJob(job, trigger);

            Console.ReadKey();
        }
    }
}

在这里插入图片描述
F5执行调试,隔五秒执行一次。需要更改执行时间,需要更换Corn表达式。

在这里插入图片描述

4 Cron表达式

介绍

cron是已存在很长时间的UNIX工具,因此其调度功能强大且经过验证。
cron表达式是由7段构成:秒 分 时 日 月 星期 年(可选)

直接推荐在线表达式地址,没有任何推广成分,都是我平时用的

在线corn表达式

在这里插入图片描述

  1. "*" 用于选择字段中的所有值,例如,在分钟字段中表示“每分钟”。
  2. "?" 在需要在允许使用字符的两个字段之一中指定某些内容而在另一个不允许使用的字段中指定内容时很有用。例如,如果我希望触发器在每月的某个特定日期(例如10号)触发,但不在乎是星期几,则将其10输入“月日”字段,以及?“星期几”字段中。
  3. "-" 用于指定范围。例如,10-12在小时字段中表示“小时10、11和12”。
  4. "," 用于指定其他值。例如,MON,WED,FRI在“星期几”字段中表示“星期一,星期三和星期五的日子”。
  5. "/" 用于指定增量。例如,0/15在秒字段中表示“秒0、15、30和45”。和5/15在秒字段的意思是“秒5,20,35和50”。
  6. "L" 在允许使用的两个字段中都有不同的含义。例如,“L月日”字段中的值表示“月的最后一天”
  7. "W" 用于指定最接近给定日期的工作日(星期一至星期五)。例如,如果您要指定“15W月日”字段的值,则含义是:“离月15日最近的工作日”。
  8. "#" 用于指定每月的“第n个” XXX天。例如,“6#3星期几”字段中的值表示“每月的第三个星期五”(第6天=星期五,“#3” =每月的第三个星期五)。

关于其他个人笔记

  1. C# 使用RabbitMQ的完整图解
  2. VS中进行编码时智能提示由英文切换为中文
  3. 开源项目-一沙后台管理(core-mvc-缓存,支持多数据库)
  4. ASP.NET Core中使用NLog记录日志
  5. Visual Studio中Git的使用
  6. [完全图解]NET Croe 使用JWT验证签名

在这里插入图片描述
在这里插入图片描述

免费评分

参与人数 2吾爱币 +9 热心值 +2 收起 理由
yezhengw111 + 2 + 1 热心回复!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

不知道改成啥 发表于 2021-3-15 14:35
,最重要的是支持配置文件很简单
表达式生成就直接百度:表达式生成
yezhengw111 发表于 2021-3-15 17:48
wwxb 发表于 2021-3-30 11:24
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 14:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表