当前位置: 首页 > news >正文

C#灵活的任务调度组件FluentScheduler

FluentScheduler是一个C#的灵活的任务调度组件,支持各类任务调度。网上有很多演示代码,此处记录下来,方便自己查找。

// See https://aka.ms/new-console-template for more information
//Console.WriteLine("Hello, World!");using FluentScheduler;
//FluentScheduler 中 对象: IJob(工作)、Registry(注册)、Schedule(计划)start();void start()
{ JobManager.Initialize(new MyRegistry());//JobManager.AddJob(t => t.ToRunEvery(1).Days().At(24, 00));//每天的凌晨12点 执行 //JobManager.AddJob(t => t.ToRunEvery(1).Months().OnTheLastDay().At(8, 30));//每个月的最后一天早上八点半 执行JobManager.Start();//启动任务管理器}
while(true)Thread.Sleep(1000);/// <summary>
///  工作类
/// </summary>
public class MyJob : IJob
{public void Execute(){//编写需要工作的内容//比如输出一句话Console.WriteLine($"执行工作,{DateTime.Now:HH:mm:ss.FFFF}!");}
}/// <summary>
///  注册表
/// </summary>
public class MyRegistry : Registry
{//无参构造函数public MyRegistry(){//安排任务运行在一个区间//Schedule<MyJob>().ToRunNow().AndEvery(3).Seconds();Schedule(()=>{Console.WriteLine($"schedule:{DateTime.Now:HH:mm:ss.FFFF}");}).ToRunNow().AndEvery(2000).Milliseconds();// 安排任务运行一次,由一个特定的时间间隔延迟。Schedule<MyJob>().ToRunOnceIn(3).Seconds();//安排一个简单的任务在一个特定的时间运行//Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);//安排一个更复杂的行动,立即运行和每月的时间间隔//Schedule(() =>//{//    Console.WriteLine("Complex Action Task Starts: " + DateTime.Now);//    Thread.Sleep(1000);//    Console.WriteLine("Complex Action Task Ends: " + DateTime.Now);//}).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);//计划多个任务在一个单一的日程安排中运行//Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();}
}

运行效果:

从运行效果看,FluentScheduler也是有定时器累计偏差存在,并不是完全精确的时间间隔周期调度。

Github地址:GitHub - fluentscheduler/FluentScheduler: Automated job scheduler with fluent interface for the .NET platform.

文档地址:FluentScheduler

C#作业调度FluentScheduler学习笔记

FluentScheduler定时任务的基本使用

在线Cron表达式生成器

相关文章:

  • 「Movie-web」一个非常简洁独特的电影网站开源项目
  • 【Flutter 开发实战】Dart 基础篇:最基本的语法内容
  • 华为路由器及交换机基础配置命令大全
  • element plus自定义组件表单校验
  • 视频做成二维码查看?多格式视频二维码生成器的使用方法
  • 轮询定时器 清除 + vue2.0
  • 剑指offer题解合集——Week3day7
  • LeetCode 83. 删除排序链表中的重复元素
  • [NAND Flash 6.4] NAND FLASH基本读操作及原理_NAND FLASH Read Operation源码实现
  • 【JAVA】在 Queue 中 poll()和 remove()有什么区别
  • 从零开始搭建一个个人博客并部署发布
  • 用通俗易懂的方式讲解:图解 Transformer 架构
  • pythonnumpy十三:借助numpy解方程
  • 嵌入式软件开发人员有必要学习系统移植的知识吗?【ppt获取见文末】
  • Python之Matplotlib绘图调节清晰度
  • 《深入 React 技术栈》
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【技术性】Search知识
  • canvas 绘制双线技巧
  • JavaScript DOM 10 - 滚动
  • Java多线程(4):使用线程池执行定时任务
  • Linux Process Manage
  • miaov-React 最佳入门
  • php面试题 汇集2
  • Windows Containers 大冒险: 容器网络
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 从伪并行的 Python 多线程说起
  • 规范化安全开发 KOA 手脚架
  • 回顾2016
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 面试总结JavaScript篇
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 设计模式(12)迭代器模式(讲解+应用)
  • 协程
  • 用Python写一份独特的元宵节祝福
  • puppet连载22:define用法
  • ​MySQL主从复制一致性检测
  • ​虚拟化系列介绍(十)
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (C语言)二分查找 超详细
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (算法二)滑动窗口
  • (转)Google的Objective-C编码规范
  • (转)Windows2003安全设置/维护
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET Core 2.1路线图
  • .Net环境下的缓存技术介绍
  • [C#]winform部署yolov9的onnx模型
  • [Hive] CTE 通用表达式 WITH关键字