.Net core使用Quartz.Net 实现定时任务
很多情况下,我们需要完成一些定时执行的功能,用很多定时工具,像:hangfire,TimeJob,以及Quartz.net,不过quartz.net 比较精确一些,功能也比较强大,所以我选择了Quart.net,Quartz.net更新之后就支持.net core 了,非常强大的定时工具之一。
使用Quartz.net之前,我们需要引入Nuget包,在Nuget包管理器中搜索Quartz,点击安装就可以了,当然也可以在包控制台里输入
Install-Package Quartz
安装成功之后,我们需要一个定义job类去实现我们的触发器,如下:
using Quartz; using Quartz.Impl; public class QuartzJob { public static async void CreateJob(string name, string group, string cron) { ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); IScheduler scheduler = await schedulerFactory.GetScheduler(); DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now,1); DateTimeOffset endTime = DateBuilder.NextGivenMinuteDate(DateTime.Now, 10); IJobDetail job = JobBuilder.Create<QuartzTest>() .WithIdentity(name,group) .Build(); ICronTrigger cronTrigger = (ICronTrigger)TriggerBuilder.Create() .StartAt(startTime) .EndAt(endTime) .WithIdentity(name, group) .WithCronSchedule(cron) .Build(); await scheduler.ScheduleJob(job, cronTrigger); await scheduler.Start(); } }
首先别忘了引用命名空间
using Quartz; using Quartz.Impl;
然后这里有三个参数,name和group 是这个job也就是这个定时任务的身份标识,而cron则是你想要定时的表达式。
cron表达式:从左到右分别为:秒 分 小时 月份中的日期 月份 星期中的日期 年份 (中间用空格隔开)。其中年份可空。
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 或者 JAN-DEC , - * /
星期 1-7 或者 SUN-SAT , - * ? / L C #
年(可选) 留空, 1970-2099 , - * /
参考:原文:https://blog.csdn.net/weixin_40426638/article/details/78959972
然后我们需要定义一个类去实现我们触发器要执行的方法。也就是我们要实现的功能,如下:
public class QuartzTest : IJob { /// <summary> /// 触发器触发之后执行的方法 /// </summary> /// <param name="context"></param> /// <returns></returns> public async Task Execute(IJobExecutionContext context) { string path = @"C:\Users\win 10\Desktop\1.txt"; string value = DateTime.Now.ToString(); if (File.Exists(path)) { File.Delete(path); } StreamWriter streamWriter = new StreamWriter(path,true); await streamWriter.WriteLineAsync(value); streamWriter.Flush(); streamWriter.Close(); } }
当然别忘了引入
1 | using Quartz; |
这里注意必需要用到异步方法。这里实现的就是你想要实现的方法了。
总的来说,Quart.Net使用非常方便,而且功能十分强大。如有错误,欢迎指正,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理