后台任务如何支持间隔时间、Cron表达式两种方式?

分享一个项目TaskScheduler,这是我从Furion项目中拷出来的

源码:https://gitee.com/dot-net-core/task-scheduler.git

开始

间隔时间后台服务

    public class IntervalBackgroundService : BackgroundService
{
private readonly ILogger<IntervalBackgroundService> _logger = null;
public IntervalBackgroundService(ILogger<IntervalBackgroundService> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await SpareTime.DoAsync(1000, () =>
{
_logger.LogInformation("Interval Worker running at: {time}", DateTimeOffset.Now);
}, stoppingToken);
}
}
}

Cron表达式后台服务

    public class CronBackgroundService : BackgroundService
{
private readonly ILogger<CronBackgroundService> _logger = null;
public CronBackgroundService(ILogger<CronBackgroundService> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// 执行 Cron 表达式任务
await SpareTime.DoAsync("*/5 * * * * *", () =>
{
_logger.LogInformation("Cron Worker running at: {time}", DateTimeOffset.Now);
}, stoppingToken, CronFormat.IncludeSeconds);
}
}
}

支持Cron表达式、间隔时间的工具(TaskScheduler)的更多相关文章

  1. 通过Quartz 配置定时调度任务:使用cron表达式配置时间点

    Cron官网入口 在后台经常需要一些定时处理的任务,比如微信相关应用所需的access_token,就要定时刷新,官方返回的有效性是7200s,也就是2小时,但是为了保险起见,除了在发现access_ ...

  2. Quartz中时间参数说明 即Cron表达式

    Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...

  3. Quartz中Cron表达式使用方法

    Quartz中CronTrigger支持日历相关的反复时间间隔(比方每月第一个周一运行),而不是简单的周期时间间隔. 它的调度规则基于 Cron 表达式. 以下就来说一下Cron表达式的规则及使用方法 ...

  4. spring 定时任务 scheduled Cron表达式

    转载:https://blog.csdn.net/u011789653/article/details/51153536 可以借鉴:https://www.cnblogs.com/softidea/p ...

  5. spring cron表达式及解析过程

    1.cron表达式 cron表达式是用来配置spring定时任务执行时间的字符串,由5个空格分隔成的6个域构成,格式如下: {秒}  {分}  {时}  {日}  {月}  {周} 每一个域的含义解释 ...

  6. quartz.net 时间表达式----- Cron表达式详解

    序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...

  7. cron表达式增加一段时间变为新的表达式

    cron表达式是使用任务调度经常使用的表达式了.对于通常的简单任务,我们只需要一条cron表达式就能满足.但是有的时候任务也可以很复杂. 最近我遇到了一个问题,一条任务在开始的时候要触发A方法,在结束 ...

  8. Cron Expressions——Cron 表达式(QuartZ调度时间配置)

    如果你需要像日历那样按日程来触发任务,而不是像SimpleTrigger 那样每隔特定的间隔时间触发,CronTriggers通常比SimpleTrigger更有用. 使用CronTrigger,你可 ...

  9. Spring 调度工具Quartz cron 表达式的格式

    http://chinaxxren.iteye.com/blog/839630 Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别.区别之一就是 Quar ...

随机推荐

  1. JAVA的一般输入输出 和 快速输入输出 (BufferedReader&BufferedWrite)(转载)

    1.JAVA的一般输入输出 和 快速输入输出 (BufferedReader&BufferedWrite) 摘要 本文主要介绍快速输入输出, 文中提到了几个IO类,这里推荐使用Buffered ...

  2. TextLineCodecFactory笔记

    Mina的TextLineCodecFactory将字符串编码为字节流,将字节流解码为字符串,下面是使用中遇到的两个问题. TextLineCodecFactory改变了message的类型 acce ...

  3. 《微服务架构设计模式》读书笔记 | 第4章 使用Saga管理事务

    目录 前言 1. 微服务架构下的事务管理 1.1 分布式事务的挑战 1.2 一个Saga的示例 1.3 Saga使用补偿事务来回滚所作出的改变 2. Saga的协调模式 2.1 两种Saga协调模式 ...

  4. sqli-labs lesson 24-25a

    less 24: 注意一开始登录后出现无法返回或者跳转页面的话是因为一开始解压sqli-labs文件时出现 logged-in.php文件不正确同名文件有问题. 直接重新解压一边全部替换掉所有文件即可 ...

  5. 003 PCI Express体系结构(三)

    一.PCI总线的存储器读写总线事务 总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,P ...

  6. Skywalking-07:OAL原理——解释器实现

    OAL 解释器实现 OAL 解释器是基于 Antlr4 实现的,我们先来了解下 Antlr4 Antlr4 基本介绍 Antlr4 使用案例 参考Antlr4的使用简介这篇文章,我们实现了一个简单的案 ...

  7. 一文搞懂B树、B-树、B+树

    前言 B树和B-树是同一种数据结构,如果不清楚的话,会被面试官忽悠,所以本文介绍两种数据结构,B树和B+树,废话不多数咱们开干. B树 介绍 在计算机科学中,B树是一种自平衡的树,能够保持数据有序.这 ...

  8. 从net到java:MyBatis快速入门

    第一:这不是net与java的对比,只是我学习java相关知识梳理的笔记. 第二:这也没有否认net,只是现在的工作需要自己会java. 第三:这不深入.只是我看了些官网和网上的视频,算是入门的总结. ...

  9. ORM 之 EF的使用(一)

    早期对数据库进行操作 通过Ado.Net 操作数据库 需要操作sqlCommand/sqlConnection/adapter/datareader 如图 后来 基于面向对象的思想 出现了中间件ORM ...

  10. WPF---数据绑定之RelativeSource(五)

    一.概述 当Binding有明确的数据来源的时候,我们可以用Source或者ElementName赋值的办法让Binding与之关联. 但是,有时候当我们不能确定作为Source的对象叫什么名字的时候 ...