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服务了,更重要的是时间设置起来灵活很多,定时任务难点不就是在这么。

最新文章

  1. SQL SERVER 得到汉字首字母函数四版全集 --【叶子】
  2. 重置mysql数据库密码
  3. 从零开始学CSRF
  4. SQL语句一次INSERT多条记录的方法
  5. 基于React Native的Material Design风格的组件库 MRN
  6. ServiceStack.OrmLite 笔记2 -增
  7. linq中查询列表的使用及iqueryable和list集合之间的转换
  8. iOS用AVAudioPlayer播放m4a音频
  9. linux watchdog demo hacking
  10. 关于SWT的容器类之----面板Composite类和Group类
  11. javascript高级编程笔记02(基本概念)
  12. Swift - 17 - 数组的初始化
  13. Android系统中长按事件的实现机制解析
  14. JQ动画 show hide
  15. (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  16. poj 1604 Just the Facts
  17. libyuv编
  18. A1107. Social Clusters
  19. oracle 重建索引以及导出所有的索引脚本(可以解决还原数据库文件时先还原数据,在重新用脚本创建索引)
  20. jQuery源码分析学习--资料收集--更新中

热门文章

  1. python中使用rsa加密
  2. NLP之CRF应用篇(序列标注任务)
  3. [LeetCode] 164. Maximum Gap 求最大间距
  4. jmeter和ab的对比
  5. Nginx开启gzip提高页面加载速度
  6. 【07月16日】A股滚动市净率PB历史新低排名
  7. 释放mac磁盘空间
  8. 在Linux上利用curl 命令模拟 HTTP GET/POST 请求
  9. yarn安装node-sass失败问题
  10. vue 复制文本到剪切板上