跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C#

.NET 中 Quartz.NET 任务调度核心概念与实战

Quartz.NET 作为 .NET 生态中的常用任务调度库,其核心涉及 IScheduler、IJobDetail 和 ITrigger 三个对象。参数传递需特别注意 JobDataMap 的合并规则及大小写敏感性,涵盖基础配置流程与代码实现细节。

abccba发布于 2020/8/14更新于 2026/10/2287 浏览
.NET 中 Quartz.NET 任务调度核心概念与实战

基础使用

首先需要在项目中引入 Quartz.NET 的 NuGet 程序包,这是构建定时任务的基础。

Quartz.NET 的核心架构围绕三个主要接口展开,理解它们的关系是配置任务的关键:

  • IScheduler:相当于时间轴的容器,负责管理所有的任务和触发器。你可以把它想象成一个盒子,里面装着具体的执行单元。
  • IJobDetail:描述具体做什么事情。它定义了定时任务执行的动作,即实际的业务逻辑载体。
  • ITrigger:定义时间策略。它决定了按照什么频率、在什么时间点来执行任务。

参数传递机制

在任务执行过程中,经常需要传递上下文参数。Quartz 提供了两种 Map 用于传参:

  1. jobDetail.JobDataMap.Add:绑定到作业本身的参数。
  2. trigger.JobDataMap.Add:绑定到触发器的参数。

注意,当两者同时存在时,context.MergedJobDataMap 会进行合并处理。如果键名重复,以后者为准。此外,获取参数时严格区分大小写,链式传参时需留意这一点。

代码实现

下面是一个完整的初始化示例,展示了如何启动调度器并注册一个简单的任务。这里我们直接实例化工厂来获取调度器,然后定义作业和触发器。

#region Scheduler Initialization
var factory = new StdSchedulerFactory();
var scheduler = await factory.GetScheduler();
await scheduler.Start();
#endregion

// 定义任务详情
var jobKey = new JobKey("MyJob");
var jobDetail = JobBuilder.Create<MyJob>()
    .WithIdentity(jobKey)
    .Build();

// 定义触发器
var trigger = TriggerBuilder.Create()
    .WithIdentity("MyTrigger")
    .StartNow()
    .WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())
    .Build();

// 注册任务
await scheduler.ScheduleJob(jobDetail, trigger);

在实际运行中,确保你的 MyJob 类实现了 IJob 接口,并在 Execute 方法中处理业务逻辑。这样,调度器就会按照设定的频率自动调用你的代码。

目录

  1. 基础使用
  2. 参数传递机制
  3. 代码实现

更多推荐文章

查看全部
  • Java 项目构建工具 Maven 入门指南:依赖管理与仓库配置
  • Go 语言快速入门与核心知识点总结
  • 大模型分布式训练与高效调参技术实战
  • Windows 下多 Python 环境管理与灵活切换实战指南
  • Go 语言实现奇偶转置排序算法
  • AIGC 延迟优化实战:C++ 零拷贝与异步调度方案
  • React 项目集成 Microi 吾码低代码开发指南
  • 希水涵 Web 日志分析工具 V0.32 版本更新
  • 使用 DevCloud 流水线自动化部署 Web 应用
  • 量化、算子融合、内存映射:C 语言实现 AI 推理的三板斧
  • Python 调用高德地图 MCP 服务查询天气示例
  • Python 学习路线与经典书籍推荐:从入门到高级开发
  • PyCharm 集成 GitHub Copilot 插件安装与配置指南
  • JavaAI 全流程实操指南:从需求到部署的智能开发体验
  • 低空无人机智能管控与 AI 智慧巡检平台架构及场景应用
  • 从零构建可扩展 Flutter 应用:v1.0 到 v2.0 架构演进详解
  • IROS 2025 精选论文:从通用机器人到真实世界部署
  • 大模型在大数据平台的应用场景与开发落地实践
  • C++ Qt 窗口框架与菜单栏 QMenuBar 使用指南
  • C/C++ 错误处理机制与常用函数详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online