项目中很多时候需要同步第三方接口数据,如果是人为来进行同步,费时费人力是不可取的。
通常会在后台开发定时任务同步数据比如间隔30分钟运行任务同步。
C# 提供很多好用的第三方库进行任务调度如Quartz.NET。
Quartz.NET是 一个开源的.NET作业调度库可以在特定时间执行一些任务如定时任务,周期性任务,一次性任务等。使用非常灵活简单,可以通过NuGet包管理器来安装它。
在Visual Studio中,你可以通过
“工具”->“NuGet包管理器”->“管理解决方案的NuGet程序包” 来搜索并安装Quartz。

Quartz类库核心概念
IJob:任务接口,实现IJob接口的Execute方法,其包含要执行任务的具体业务逻辑。
Trigger:任务触发器,定义什么时候进行任务触发执行。
Scheduler:任务调度器,主要负责安排和触发任务,即将要执行的方法挂载在里面执行调度。
JobDetail:任务的具体信息,如任务名称和描述信息。
using Quartz;
using Quartz.Impl;
using System;
using System.Threading.Tasks;
namespace A_JobScheduler
{
internal class Program
{
static void Main(string[] args)
{
// 创建 StdSchedulerFactory 的实例
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
try
{
// 使用工厂创建调度器实例
IScheduler scheduler = schedulerFactory.GetScheduler().Result;
// 初始化调度器
scheduler.Start();
// 定义一个任务(JobDetail)
IJobDetail job = JobBuilder.Create<MyJob>()
.WithIdentity("myJob", "group1")
.Build();
// 定义一个触发器(Trigger)
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("myTrigger", "group1")
.StartNow() // 立即开始执行任务
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(3) // 每3秒执行一次
.RepeatForever()) // 重复执行
.Build();
// 将任务和触发器绑定到调度器上,并开始执行
scheduler.ScheduleJob(job, trigger);
Console.ReadLine();
}
catch (SchedulerException se)
{
Console.WriteLine($"SchedulerException occurred: {se.Message}");
}
Console.ReadKey();
}
}
//定义一个任务类实现IJob接口
class MyJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine(context.JobDetail.Key.Group+":Job Running.." +DateTime.Now);
return Task.CompletedTask;
}
}
}输出:
group1:Job Running..2026/2/8 15:36:42
group1:Job Running..2026/2/8 15:36:45
group1:Job Running..2026/2/8 15:36:48