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

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

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

abccba发布于 2020/8/14更新于 2026/9/852 浏览
.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. 代码实现

更多推荐文章

查看全部
  • 基于 Bright Data MCP 与 N8N 的 AI 新闻编辑自动化工作流实践
  • FPGA Vivado 下载及烧录流程详解
  • 带电/含锂电/储能产品出口的三条合规新变化
  • 基于 Higress 将 REST API 转换为 MCP Server 工具
  • Nature Methods 论文:跨九种模态生物医学对象联合分割检测识别基础模型 BiomedParse
  • Spring Boot 微服务架构设计与实现
  • Unity 开发 Pico VR 基础应用:环境搭建与实战部署
  • ClawdBot (OpenClaw) Discord 机器人部署指南
  • 如何在 VS Code 中集成并使用 Cursor AI
  • 扩散模型(Diffusion Model)原理与图像生成实战
  • MacOS 使用 VSCode 和 CMake 进行 STM32 开发配置指南
  • C++ Qt 窗口框架与菜单栏 QMenuBar 使用指南
  • 国内 Stable Diffusion 与 LLaMA 模型镜像站推荐及下载加速指南
  • AI 写作工具深度测评:逻辑、拟人度与成本对比
  • 使用 cpolar 内网穿透实现 OpenClaw 远程访问
  • C++高性能服务器开发:CPU核心绑定与性能优化
  • FLUX.1-dev FP8 低显存部署与优化指南
  • Spring Cloud OpenFeign 远程调用最佳实践
  • Spring 事务管理核心:@Transactional 注解与传播机制
  • 非标自动化教学系列课程

相关免费在线工具

  • 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