IRONSOFTWAREHOME
开发者更新

Quartz .NET(开发人员如何使用)

Jacob Mellor,Team Iron 的首席技术官
Jacob Mellor
Updated: 2026年4月21日

Quartz.NET 介绍

对于 .NET 应用程序,Quartz.NET 是一个备受欢迎的开源任务调度工具包。 它为程序员提供了一个强大的基础,用于在预定时间、间隔或响应触发器的情况下计划和执行作业、日程安排或流程。 Quartz.NET 使得在 .NET 应用程序中构建复杂的调度场景变得更加容易,无论是用于发送通知、安排作业、生成报告还是完成定期维护活动。 Quartz.NET 作为一个作业调度系统,适合从创建小型应用程序到大规模企业系统。

Quartz.NET 的最新调度器版本与各种支持的数据库提供者无缝集成,赋予开发人员使用便捷的扩展方法来扩展其功能,同时确保作为托管服务可靠地执行任务。

将 Quartz.NET 与 IronPDF 集成,可以在 .NET 应用程序中构建具有强大 PDF 生成能力的可靠调度系统。 尽管 IronPDF 提供了用于创建、修改和显示 PDF 文档的完整工具套件,Quartz.NET 则提供了多功能且可靠的调度系统。 结合使用时,它们使开发人员能够将 PDF 生成操作自动化,作为工作流程的一部分或安排后台作业,从而提高应用程序的实用性和功能性。

关键特性

灵活的调度

Quartz.NET 使程序员能够创建日程,指示程序在预定的间隔或时间运行(例如,按小时、每日、每 30 分钟)。 它兼容复杂的调度模式,例如 cron 表达式,这提供了对代码、作业和服务执行时间的精确控制。

基于触发器的执行

在 Quartz.NET 中,作业可以通过多种触发器启动。 这些包括基于日历的触发器(例如,排除周末),简单触发器(根据设定的时间表运行),作业触发器,以及依赖于外部情况或事件的自定义触发器。

作业持久化

Quartz.NET 具有以持久化方式安排作业的能力,支持在数据库中存储计划任务及其完成的历史记录。 作业计划对应用程序故障或重启具有弹性,并且支持高可用性和可伸缩性。

并发控制

为了确保任务的安全和有效完成,Quartz.NET 拥有内置的并发控制工具。 为了控制作业执行的并发性,开发人员可以设置线程池、作业优先级和执行约束。

作业链和依赖管理

开发人员可以利用 Quartz.NET 的作业链和依赖管理功能,定义作业的执行顺序及其关系。 这使得为后台作业、服务和程序创建复杂的编排场景成为可能。

错误处理和重试技术

为了优雅地管理失败,Quartz.NET 配备了错误处理和重试技术。 在临时失败或异常发生的情况下,开发人员可以设置重试策略和错误处理技术,以确保作业被重试或重新安排。

集群与可伸缩性

得益于 Quartz.NET 对分布式作业调度中的集群支持,调度程序的多个实例可以在服务器集群中协调并执行任务。 这通过启用横向可伸缩性和容错能力,确保了在分布式环境中可靠的作业调度器和执行。

与 .NET 生态系统集成

Quartz.NET 轻松接口 .NET 生态系统,包括消息传递系统(如 Rebus.NET、MassTransit),日志框架(如 Serilog、NLog),以及流行的依赖注入框架(如 Autofac、Microsoft.Extensions.DependencyInjection)。

创建和配置 Quartz.NET

定义作业和触发器

为您希望执行的任务建立作业和触发器。 要完成的任务由上下文对象和作业类表示,作业执行的频率和时间由触发器决定。

using Quartz;

// Define a job by implementing the IJob interface
public class MyJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Implement the logic for your job here
    }
}

// Build the job instance using JobBuilder
var job = JobBuilder.Create<MyJob>()
    .WithIdentity("myJob", "group1") // Assign a unique name and group to the job
    .Build();

// Create a trigger to define when the job should be executed
var trigger = TriggerBuilder.Create()
    .WithIdentity("myTrigger", "group1") // Assign a unique name and group to the trigger
    .WithCronSchedule("0 0/5 * * * ?") // Run every 5 minutes based on the cron expression
    .Build();

配置和初始化调度器

在使用指定配置设置作业调度器以调度后台任务、作业和触发器后,启动调度器开始规划和执行作业。

using Quartz;
using Quartz.Impl;

// Create a scheduler factory and get a scheduler instance
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler(); 

// Start the scheduler
await scheduler.Start();

// Schedule the job with its corresponding trigger
await scheduler.ScheduleJob(job, trigger);

作业持久化

设置 Quartz.NET 在持久存储(如数据库)中存储作业和触发器元数据。 这保证了可靠性,并允许作业生存应用程序重启。

错误处理

将错误处理和重试逻辑整合到您的工作执行逻辑中,以优雅地处理失败。 Quartz.NET 提供了内置的方法来管理异常和重试任务。

集群

为了确保在分布式环境中使用 Quartz.NET 时的高可用性和可伸缩性,请设置集群。 通过集群,调度程序实例可以在服务器集群之间协作并执行任务。

依赖注入

如果您的应用程序使用依赖注入框架,请设置 Quartz.NET 与您的依赖注入(DI)容器通信,以管理作业依赖、配置和生命周期。

IronPDF

Quartz .NET(开发者使用指南):图1 - IronPDF网页

.NET 包 IronPDF 使得在 .NET 程序中创建、修改和渲染 PDF 文档成为可能。 提供了丰富的功能来与 PDF 互动:从 HTML 内容、照片或原始数据创建 PDF 文档; 向现有的 PDF 文档附加文本、图像和形状; 将 HTML 页面转换为 PDF; 从 PDF 中提取文本和图像。

IronPDF在HTML到PDF转换方面表现出色,确保精确保留原始布局和样式。 它非常适合从基于Web的内容中创建PDF,如报告、发票和文档。 利用对HTML文件、URL和原始HTML字符串的支持,IronPDF轻松生成高质量的PDF文档。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert an HTML string to a PDF document
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert an HTML file to a PDF document
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert a URL to a PDF document
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

IronPDF 的简便性和用户友好性是其主要优势之一。 借助其用户友好的 API 和广泛的文档,开发人员可以在 .NET 项目中轻松开始生成 PDF。 IronPDF 的速度和效率也是使开发人员能够快速且高效生产高质量 PDF 文档的特点。

IronPDF。 核心功能

  • 从原始数据、HTML 和图像创建 PDF。
  • 从 PDF 文件中提取文本和图像。
  • 允许您在 PDF 文件中包含标题、脚注和水印。
  • 创建具有密码和加密安全性的 PDF 文档。
  • 提供填写表单和数字签名的工具。

使用 Quartz 与 IronPDF

要在控制台或 ASP.NET Core 应用程序中开始使用 IronPDF 和 Quartz.NET,您可以使用 IronPDF 建立一个计划的后台作业,运行与 PDF 生产相关的任务。

安装 Quartz 和 IronPDF 包

首先,确保您已在 .NET 项目中通过 Visual Studio 包管理器控制台安装 IronPDF 和 Quartz.NET 所需的 NuGet 包,使用以下命令:

Install-Package Quartz
Install-Package IronPdf
SHELL

代码示例

本节演示了如何制作一个使用 IronPDF 创建 PDF 文档的 Quartz 作业。

using Quartz;
using IronPdf;

// Implementing a job that generates a PDF using IronPDF
public class PdfGenerationJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {
        // Generating PDF using IronPDF
        var htmlContent = "<h1>Hello, IronPDF!</h1>";
        var pdfRenderer = new HtmlToPdf();
        var pdfDocument = pdfRenderer.RenderHtmlAsPdf(htmlContent);

        // Save the generated PDF to a file
        pdfDocument.SaveAs("output.pdf");
    }
}

设置 Quartz.NET 以利用触发器在预定计划上运行 PDF 创建过程。

// Create and configure the Quartz scheduler
var schedulerFactory = new StdSchedulerFactory();
var scheduler = await schedulerFactory.GetScheduler();
await scheduler.Start();

// Define the job and bind it to our PdfGenerationJob class
var job = JobBuilder.Create<PdfGenerationJob>()
    .WithIdentity("pdfGenerationJob", "pdfGenerationGroup")
    .Build();

// Define a trigger to schedule the PDF generation job
var trigger = TriggerBuilder.Create()
    .WithIdentity("pdfGenerationTrigger", "pdfGenerationGroup")
    .WithSimpleSchedule(x => x
        .WithIntervalInMinutes(30) // Run every 30 minutes
        .RepeatForever())
    .Build();

// Schedule the job using the scheduler
await scheduler.ScheduleJob(job, trigger);

要启动 Quartz 调度器并开始执行计划任务:

// Start the scheduler
await scheduler.Start();
// Optionally, monitor scheduler for job execution

下面是从上述代码生成的输出。

Quartz .NET(开发者使用指南):图2 - 来自IronPDF和Quartz.NET代码示例的输出

结论

总而言之,Quartz.NET 和 IronPDF 的组合为自动化 .NET 应用程序中创建 PDF 的操作提供了一种强大的方法。 借助 Quartz.NET 的强大而灵活的调度系统,开发人员可以创建将会在预定的间隔或时段执行活动的作业和触发器。 另一方面,IronPDF 为开发人员提供了所有所需工具来创建和处理 PDF 文档。 使用 HTML、图形或原始数据,开发人员可以创建具有专业外观的 PDF。

通过将 IronPDF 的 PDF 生成功能与 Quartz.NET 的调度能力集成在一起,开发人员可以自动化分布式应用程序中的常见 PDF 生成操作,例如在预定的间隔或响应触发器时生成报告、发票,或文档。 这种集成使开发人员更容易地生产和发送高质量的 PDF 文档给客户或客户朋友,通过简化文档生成工作流程,提高生产力,减少手动工作。

IronPDF 价格合理,当作为包的一部分购买时,还附带终身许可证。 由于此软件包仅需一次支付$999,且适用于多个系统,因此具有非凡价值。 它为许可证持有者提供全天候在线工程支持。 要了解更多由 Iron Software 生产的产品,请访问 Iron Software 网站上的 Iron Software 产品页面。

Jacob Mellor,Team Iron 的首席技术官
首席技术官

Jacob Mellor 是 Iron Software 的首席技术官,也是一位开创 C# PDF 技术的有远见的工程师。作为 Iron Software 核心代码库的原始开发者,他从公司成立之初就开始塑造公司的产品架构,与首席执行官 Cameron Rimington 一起将公司转变为一家拥有 50 多名员工的公司,为 NASA、特斯拉和全球政府机构提供服务。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户