很多情况下,我们需要完成一些定时执行的功能,用很多定时工具,像: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,);
DateTimeOffset endTime = DateBuilder.NextGivenMinuteDate(DateTime.Now, ); 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();
}
}

当然别忘了引入

using Quartz;

这里注意必需要用到异步方法。这里实现的就是你想要实现的方法了。

总的来说,Quart.Net使用非常方便,而且功能十分强大。如有错误,欢迎指正,谢谢!

.Net core使用Quartz.Net 实现定时任务的更多相关文章

  1. .net core+topshelf+quartz创建windows定时任务服务

    .net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...

  2. .net core 2.1控制台使用Quartz.net实现定时任务执行

    权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33435149/article/de ...

  3. .NET Core开源Quartz.Net作业调度框架实战演练

    一.需求背景 人生苦短,我用.NET Core!作为一枚后端.NET开发人员,项目实践常遇到定时Job任务的工作,在Windows平台最容易想到的的思路Windows Service服务应用程序,而在 ...

  4. 3分钟掌握Quartz.net分布式定时任务的姿势

    引言 长话短说,今天聊一聊分布式定时任务,我的流水账笔记: ASP.NET Core+Quartz.Net实现web定时任务 AspNetCore结合Redis实践消息队列 细心朋友稍一分析,就知道还 ...

  5. 使用Spring整合Quartz轻松完成定时任务

    一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...

  6. spring Quartz多个定时任务的配置

    Quartz多个定时任务的配置 1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上 ztc_cp-spring-quartz.xml 注:定 ...

  7. Spring 3整合Quartz 2实现定时任务--转

    常规整合 http://www.meiriyouke.net/?p=82 最近工作中需要用到定时任务的功能,虽然Spring3也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能也不够强大.在考虑之 ...

  8. Spring 整合 Quartz 实现动态定时任务

    复制自:https://www.2cto.com/kf/201605/504659.html 最近项目中需要用到定时任务的功能,虽然Spring 也自带了一个轻量级的定时任务实现,但感觉不够灵活,功能 ...

  9. 在ASP.NET MVC4中使用Quartz.NET执行定时任务

    本篇在ASP.NET MVC下实践使用Quartz.NET执行定时任务. 首先通过NuGet安装Quartz.NET. 使用Quartz.NET的大致思路是:1.实现IJob接口,定义具体要做的事情2 ...

随机推荐

  1. 动画演示10个有趣但毫无用处的Linux命令

    Linux最强大的一个特征就是它有大量的各种小命令工具,这也可以称做是它最有趣的一个地方了.在这些大量的有用的命令和脚本中,你会发现有少部 分命令工具不那么有用的——如果你不愿意说是完全没用处的话.你 ...

  2. ES6学习笔记(一)

    ‘变量’声明 ES6新增两个声明’变量’的关键字,let和const命令. l  let用来声明局部变量 同ES5中var声明的变量不同的是,let声明的变量的作用域范围仅仅是从其声明的地方开始,到其 ...

  3. 鲁棒图(Robustness Diagram)

    鲁棒图与系统需求分析 鲁棒图(Robustness Diagram)是由Ivar Jacobson于1991年发明的,用以回答“每个用例需要哪些对象”的问题.后来的UML并没有将鲁棒图列入UML标准, ...

  4. FZEasyFile的使用

    FZEasyFile的使用 https://github.com/jiecao-fm/FZEasyFile 操作沙盒文件很恶心,但用上FZEasyFile就变得简单了. 以前你需要这么做才行: NSF ...

  5. git-day1-安装和基础使用

    Git介绍 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件 ...

  6. Apache Commons-logging使用实例

    Apache Commons-logging使用实例 本文将介绍如何在程序中使用Apache Commons-logging author: ZJ 07-3-17 Blog: [url]http:// ...

  7. Django 玩转API

    现在,让我们进入Python的交互式shell,玩转这些Django提供给你的API. 使用如下命令来调用Python shell: $ python manage.py shell 我们使用上述命令 ...

  8. 3.为JDeveloper添加不能的workspace

    1.点击选中JDeveloper,在属性中,选中快捷方式, 可以看到目标中的值为C:\Oracle\Middleware\jdeveloper\jdeveloper.exe, 只需要在修改为C:\Or ...

  9. 【[HNOI2004]L语言】

    \(Trie\)树+\(DP\) 我们只需要做一个存在性dp就好了 对于每一个字符串,我们设\(f[i]\)表示从\(1\)到\(i\)位是否能被完全匹配 首先\(f[0]=1\),之后我们对于每一个 ...

  10. C# Hadoop学习笔记(七)—C#的云计算框架借鉴(下)

    转自:http://blog.csdn.net/black0707/article/details/12853049 在上篇里,我们主要讨论了,这个系统怎样处理大数据的“读”操作,当然还有一些细节没有 ...