Quartz.Net 组件的封装使用
Quartz.Net是面向.NET的一款功能齐全的开源作业调度组件,你可以把它嵌入你的系统中实现作业调度,也可以基于Quartz.Net开发一套完整的作业调度系统。它既支持简单的timer
,也支持灵活强大的corn表达式
。本文提供了一种把Quartz.Net嵌入项目中的实现。你可以看到系统其它项目与用于作业调度的项目解耦,这样做可以实现一次封装,多系统使用。
1、环境
- 操作系统:Windows 10
- IDE:Visual Studio 2019-16.8.3
- .Net Core版本:.NET 5.0
2、创建项目,添加引用
创建一个空解决方案Theo.QuartzDemo
,然后开始添加新项目。
2.1、创建名为Theo.Business
的类库项目
创建.Net Core
类库项目Theo.Business
,代表系统的业务项目。添加Microsoft.Extensions.Logging
引用。
添加IProviderDemo
接口,定义两个方法分别提供发邮件和发短信服务。你可能觉得发邮件和发短信服务不应该在同一个provider
中,但是作为示例,我偷了个懒。
IProviderDemo.cs:
using System;
namespace Theo.Business
{
public interface IProviderDemo
{
/// <summary>
/// 模拟提供发邮件服务
/// </summary>
/// <param name="param">参数</param>
void AutoSendMail(string param);
/// <summary>
/// 模拟提供发短信服务
/// </summary>
/// <param name="param">参数</param>
void AutoSendSMS(string param);
}
}
添加IProviderDemo
的实现:ProviderDemo
using Microsoft.Extensions.Logging;
using System;
namespace Theo.Business
{
///<summary>
/// 模拟业务逻辑
///</summary>
public class ProviderDemo : IProviderDemo
{
private readonly ILogger<ProviderDemo> _logger;
/// <summary>
/// .ctor
/// </summary>
/// <param name="logger"></param>
public ProviderDemo(ILogger<ProviderDemo> logger)
{
_logger = logger;
}
/// <summary>
/// 模拟提供发邮件服务
/// </summary>
/// <param name="param">参数</param>
public void AutoSendMail(string param