利用 FluentScheduler 启动定时器计划任务
FluentScheduler 是什么?
Automated job scheduler with fluent interface.
这是作者在 Github 上的介绍,就是一个定时任务管理器。在 .Net 下类似的有微软的 Timer 、 Quartz.NET 、 FluentScheduler 以及Windows服务等,关于 Quartz.NET 的使用几乎和 Java 下的 Quartz 没什么区别。
定时任务或者说作业调度,可能也只有在你指定一个时间做统计、发邮件或者一些你想完成的业务逻辑时有用,这也是它出现的目的。
如何使用 FluentScheduler ?
我是推荐你去作者的 Github 去看看源码或例子,地址: https://github.com/fluentscheduler/FluentScheduler
当然,这里我用作者的例子做了演示和翻译,保证谁都能看的懂。
一、安装FluentScheduler
程序包
打开程序包管理控制台,输入Install-Package FluentScheduler
即可。步骤:状态栏选择 工具 - 库程序包管理器 - 程序包管理控制台,如下图:
输入Install-Package FluentScheduler
。
二、写代码
我这里只简单贴一下作者的示例代码,更推荐你去 Github 看,但我随手翻译了一下,或许更容易阅读一些。
public class Demo : Registry
{
public Demo()
{
// Schedule an IJob to run at an interval
// 立即执行每两秒一次的计划任务。(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
Schedule<MyJob>().ToRunNow().AndEvery().Seconds(); // Schedule an IJob to run once, delayed by a specific time interval
// 延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
Schedule<MyJob>().ToRunOnceIn().Seconds(); // Schedule a simple job to run at a specific time
// 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)
Schedule(() => Trace.WriteLine("It's 1:10 PM now.")).ToRunEvery().Days().At(, ); Schedule(() => { // 做你想做的事儿。
Trace.WriteLine("It's 1:10 PM now."); }).ToRunEvery().Days().At(, ); // Schedule a more complex action to run immediately and on an monthly interval
// 立即执行一个在每月的星期一 3:00 的计划任务(可以看出来这个一个比较复杂点的时间,它意思是它也能做到!)
Schedule<MyComplexJob>().ToRunNow().AndEvery().Months().OnTheFirst(DayOfWeek.Monday).At(, ); // Schedule multiple jobs to be run in a single schedule
// 在同一个计划中执行两个(多个)任务
Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery().Minutes(); } } public class MyJob : IJob
{ void IJob.Execute()
{
Trace.WriteLine("现在时间是:"+DateTime.Now);
}
} public class MyOtherJob : IJob
{ void IJob.Execute()
{
Trace.WriteLine("这是另一个 Job ,现在时间是:" + DateTime.Now);
}
} public class MyComplexJob : IJob
{ void IJob.Execute()
{
Trace.WriteLine("这是比较复杂的 Job ,现在时间是:" + DateTime.Now);
}
}
三、初始化
.net framework在Global.asax
中加入一句
JobManager.Initialize(new Demo());
.net core需要配置在Startup.css中
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//开启定时器
JobManager.Initialize(new MyFluentScheduler());
}
上面是简单的使用,其实已经足够了,当然还有更多变态的需求,作者也在文档里写了,比如这个:你想执行一个计划任务,每周一 14:00 运行。但现在是星期一上午 10:00 ,那你的程序应该在今天运行还是在下周星期一?这里用到了 ToRunEvery
。
还有并发任务的处理,有兴趣可以去看看。
总结一下
FluentScheduler 是 .Net 下,可以让你轻松实现定时任务的工具,不需要再去写Windows服务了,更重要的是时间设置起来灵活很多,定时任务难点不就是在这么。
利用 FluentScheduler 启动定时器计划任务的更多相关文章
- MVC 使用 FluentScheduler 定时器计划任务
MVC 使用 FluentScheduler 定时器计划任务 MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲 ...
- 利用shell脚本实现计划任务功能 V1.2
2013.05.10 mytask 1.2 主程序休眠时间分成若干小的时间片断分段休眠,避免长时间的休眠不能及时响应系统信号. 2013.05.07 mytask 1.1 昨天发布了mytask1. ...
- 利用mysqld_multi启动管理多实例
利用mysqld_multi启动管理多实例 官方管理多实例的一个脚本peer #将之前的目录清空 [root@mysql01 mysql]# tree /data/mysql/ /data/mysql ...
- swift - 利用UIDatePicker实现定时器的效果
效果图如下: 可以通过UIDatePicker调整倒计时的时间,然后点击UIButton开始倒计时,使用NSTimer进行倒计时的时间展示,我是声明了一个label也进行了标记, 然后点击按钮开始倒计 ...
- 利用deadline_timer实现定时器Timer
// 类似QTimer的定时器 class Timer { typedef void(* handler)(); public: Timer() : m_millseconds() , m_timer ...
- 利用Linux中的计划任务+PHP网页程序(转)
利用Linux中的计划任务+PHP网页程序,实现对web服务器运行状况的监测[每5分钟监测一次,并邮件提醒]一.我的监测服务器环境:rhel5.5+apache2.2+php5二.功能描述:写一个PH ...
- ASP.NET MVC 使用 FluentScheduler 定时器计划任务
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- 【转】ASP.NET MVC 使用 FluentScheduler 定时器计划任务
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- FluentScheduler定时器计划任务
http://www.cnblogs.com/lgxlsm/p/6734011.html 用了FluentScheduler后,再也比想用timer计时器了. FluentScheduler 是 .N ...
随机推荐
- InfoQ一波文章:AdaSearch/JAX/TF_Serving/leon.bottou.org/Neural_ODE/NeurIPS_2018最佳论文
和 Nested Partition 有相通之处? 伯克利提出 AdaSearch:一种用于自适应搜索的逐步消除方法 在机器学习领域的诸多任务当中,我们通常希望能够立足预先给定的固定数据集找出问题的答 ...
- 手机日期控件mobiscroll
query Mobiscroll是一个用于触摸设备(Android phones, iPhone, iPad, Galaxy Tab)的日期和时间选择器jQuery插件.以及各种滑动插件可以让用户很方 ...
- 3,[VS] 编程时的有必要掌握的小技巧_______________________________请从下面第 1 篇看起
本文导览: 善用“并排显示窗口”功能 做作业/测试时使用 多项目 多个源文件 多个子函数 使用Visual Studio team代码同步工具,及时把项目文件保存到云端 关闭括号分号自动联想 技巧是提 ...
- CISCO 3750交换机堆叠
双交换机堆叠操作 一.基本要求: ios版本要一致.专用的堆叠模块和堆叠线缆.最大堆叠个数9 二.堆叠的好处: 高密度端口.便于管理.堆叠的交换机可以看作一台交换机统一配置 三.堆叠实例: 1:分别清 ...
- Java之数据库基础理论
一.事务的四大特性 ACID 只有满足一致性,事务的执行结果才是正确的. 在无并发的情况下,事务串行执行,隔离性一定能够满足.此时要只要能满足原子性,就一定能满足一致性. 在并发的情况下,多个事务并发 ...
- python读写符号的含义
r 打开只读文件,该文件必须存在. r+ 打开可读写的文件,该文件必须存在. w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失.若文件不存在则建立该文件. w+ 打开可读写文件,若文件 ...
- html。PROGRESS进度条使用测试
效果图 : 代码: ----------------------------------- //本文来自:https://www.cnblogs.com/java2sap/p/11199126.htm ...
- sql server的for xml path与变通的行转列
SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...
- golang --学习笔记 运行时间计算
package main import ( "fmt" "time" ) func main() { start := time.Now() //do some ...
- Java设计模式原型模式
原型模式: – 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式. – 就是java中的克隆技术,以某个对象为原型,复制出新的对象.显然,新的对象具备原型对象的特点 – 优势 ...