当前位置: 首页 > news >正文

Web开发:通过Quatz开启定时任务调度的基础demo

一、demo程序

【需求】实现每10分钟输出当前时间到txt文档

using Quartz;
using Quartz.Impl;
using System;
using System.IO;
using System.Threading.Tasks;namespace QuartzDemo
{class Program{static async Task Main(string[] args){// 创建一个调度程序实例IScheduler scheduler = await StdSchedulerFactory.GetDefaultScheduler();await scheduler.Start();// 定义作业和将作业添加到调度程序IJobDetail job = JobBuilder.Create<WriteTimeJob>()//【设置一个作业WriteTimeJob】.WithIdentity("writeTimeJob", "group1")// 设置作业的标识符,name 为 "writeTimeJob"(唯一标识作业),group 为 "group1".Build();// 创建一个触发器,每 10 分钟触发一次ITrigger trigger = TriggerBuilder.Create().WithIdentity("writeTimeTrigger", "group1")// 设置触发器的标识符,name 为 "writeTimeTrigger"(唯一标识触发器),group 为 "group1".StartNow()// 触发器立即开始.WithSimpleSchedule(x => x.WithIntervalInMinutes(10)// 间隔10分钟.RepeatForever())// 一直重复执行.Build();//WithCronSchedule("0 0/5 8-18 * * ?") // Cron表达式,表示每天8:00到18:00,每5分钟执行一次// 将作业和触发器添加到调度程序await scheduler.ScheduleJob(job, trigger);// 阻止主线程退出Console.WriteLine("Press any key to close the application...");Console.ReadKey();// 停止调度程序await scheduler.Shutdown();}}public class WriteTimeJob : IJob{public Task Execute(IJobExecutionContext context){string filePath = "current_time.txt";//输出位置.\QuaztDemo\bin\Debug\net6.0string currentTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");// 将当前时间写入文件File.AppendAllText(filePath, currentTime + Environment.NewLine);Console.WriteLine($"Time written to {filePath}: {currentTime}");return Task.CompletedTask;}}
}

二、Cron表达式

例如表达式:

"0 0/5 8-18 * * ?"

表达的是:在每天从早上8点到晚上6点(包括6点),每5分钟在每小时的第0秒触发一次。例如,触发时间点包括8:00、8:05、8:10、...、18:00。

秒 (秒) | 分 (分) | 小时 (时) | 日 (日) | 月 (月) | 星期 (星期) | 年 (年) (可选)

解析 "0 0/5 8-18 * * ?"

  1. 秒 (0):

    • 0 表示每分钟的第0秒触发。
  2. 分 (0/5):

    • 0/5 表示每小时的第0、5、10、15、20、25、30、35、40、45、50、55分钟触发,即每5分钟触发一次。
  3. 小时 (8-18):

    • 8-18 表示每天从8点到18点(包含18点)之间的每个小时触发。
  4. 日 (*):

    • * 表示每一天,即不限制具体的日期。
  5. 月 (*):

    • * 表示每个月,即不限制具体的月份。
  6. 星期 (?):

    • ? 表示不指定星期几。? 和 * 都可以用来表示“不指定”,但在某些情况下,? 用于表示不关注这一字段的具体值。

【举例】

五个常见的Cron表达式及其解释:

1. **每小时的第15分钟触发一次**
   - 表达式: `0 15 * * * ?`
   - 解释: 每小时的第15分钟,即 00:15、01:15、02:15 等。

2. **每天午夜12点执行**
   - 表达式: `0 0 0 * * ?`
   - 解释: 每天午夜12点,即00:00。

3. **每周一早上8点执行**
   - 表达式: `0 0 8 ? * MON`
   - 解释: 每周一早上8点。

4. **每月1号凌晨1点执行**
   - 表达式: `0 0 1 1/1 ? *`
   - 解释: 每月1号凌晨1点,即01:00。

5. **每分钟执行一次**
   - 表达式: `0 * * * * ?`
   - 解释: 每分钟的第0秒执行,即每分钟一次。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【JVM】垃圾回收算法(一)
  • c++核心编程指南
  • k8s备份etcd3.5
  • jenkins任务中无法执行sudo,管理员操作
  • 分块矩阵的转置
  • Vue3源码调试-第二篇
  • 跨界融合:Scratch与硬件的创新集成
  • 网站上线3个多月了,还没有被百度收录怎么办?
  • 配置PXE预启动执行环境:Kickstart自动化无人值守安装
  • 玉米病害-目标检测数据集(包括VOC格式、YOLO格式)
  • ArrayList与顺序表
  • 基于Vue3和Node.js的完整增删改查项目实现教程:从后端封装到前端调用
  • 【Go - 每日一小问: 对未初始化的的 chan 进行读写,会怎么样?为什么?】
  • Android笔试面试题AI答之Kotlin常见考点总结
  • 【Android】Navigation动态设置Graph和Launch参数
  • .pyc 想到的一些问题
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • Apache的80端口被占用以及访问时报错403
  • canvas绘制圆角头像
  • Flannel解读
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MQ框架的比较
  • MySQL数据库运维之数据恢复
  • ucore操作系统实验笔记 - 重新理解中断
  • webpack项目中使用grunt监听文件变动自动打包编译
  • Windows Containers 大冒险: 容器网络
  • 看域名解析域名安全对SEO的影响
  • 普通函数和构造函数的区别
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 与 ConTeXt MkIV 官方文档的接驳
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (02)Hive SQL编译成MapReduce任务的过程
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (Python) SOAP Web Service (HTTP POST)
  • (生成器)yield与(迭代器)generator
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .net core + vue 搭建前后端分离的框架
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net framework profiles /.net framework 配置
  • .net 反编译_.net反编译的相关问题
  • .NET中GET与SET的用法
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • :如何用SQL脚本保存存储过程返回的结果集
  • [AIGC] 广度优先搜索(Breadth-First Search,BFS)详解
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [bzoj4240] 有趣的家庭菜园
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [C++][数据结构][跳表]详细讲解