博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.NET定时任务执行管理器开源组件–FluentScheduler
阅读量:6942 次
发布时间:2019-06-27

本文共 1630 字,大约阅读时间需要 5 分钟。

在日常项目里通常会遇到定时执行任务的需求,也就是定时器。.NET Framework里关于定时器的类有3个,分别是System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer。这三个类用法灵活,也各有特点,应对简单的定时需求,用起来很轻松。如果面对复杂应用,比如任务影响窗体UI时就 要考虑多线程操作,多线程就避免不了考虑线程安全问题,这时候用起来就比较麻烦。 

使用FluentScheduler组件,相对来说就轻松多了。FluentScheduler 是一个更精密和复杂的调度组件,它采用多线程操作,不会影响主线程,在线程安全方面它也有很好的处理,任务运行时还可以显式控制。FluentScheduler用起来也很简单,在GitHub上有应用示例。这里举个简单应用示例。

  1. 获取FluentScheduler Package 
    首先可以使用Nuget程序包管理器获取FluentScheduler Package,在Nuget程序包管理器控制台中输入命令:Install-Package FluentScheduler,然后回车键即可。如图所示 
    通过NuGet获取FluentScheduler
  2. 创建定时任务
Registry registry = new Registry();registry.Schedule(()=>WriteDateTimeString()).WithName("WriteTimeString").ToRunNow().AndEvery(2).Seconds(); JobManager.Initialize(registry);

 

这里WriteDateTimeString()是自定义的方法,也就是定时执行的任务,其中WithName(“WriteTimeString”)中的WriteTimeString是给这个定时任务唯一ID,这个任务ID是用于显示控制任务,后面终止任务会用到。AndEvery(2).Seconds()意思是立即执行,而且每间隔2秒执行一遍。最后还需要JobManager.Initialize()函数初始化任务列表,Registry类是用于注册一个或多个任务,JobManager.Initialize之后,定时任务就立即执行。刚才提到的WriteDateTimeString()代码如下:

private void WriteDateTimeString()        {            SetText(DateTime.Now.ToString() + " 正在执行任务\n");        }        private void SetText(string text) { if (this.richTextBox1.InvokeRequired) { Action
setTextCallBack =SetText; this.Invoke(setTextCallBack, new object[] { text }); } else { this.richTextBox1.AppendText(text); } }

 

3.终止任务 

终止任务很简单,就一行代码:

JobManager.RemoveJob("WriteTimeString");

整个例子运行截图如下图: 

运行截图

4.需要注意的地方 

FluentScheduler 目前的版本FluentScheduler 5.0.0(2016年7月20日发布),使用函数与之前的版本略微有点不同。之前版本,使用TaskManager进行任务管理,5.0.0版使用JobManager管理任务。 
5.示例代码地址 

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/6230483.html
,如需转载请自行联系原作者
你可能感兴趣的文章
snort 中的IP集合解析
查看>>
有用的Github项目地址
查看>>
(代码片段)最大公约数
查看>>
scala第九天Class
查看>>
Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
查看>>
sencha touch2 用phonegap21.9.0打包在安卓4.3下不能运行
查看>>
《完美软件开发》
查看>>
2013年埃森哲CIO移动技术调查报告
查看>>
8步教你打开Android之门 NDK入门教程
查看>>
spirng jar包说明
查看>>
iPhone Gradient Buttons
查看>>
DDPageControl
查看>>
【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)...
查看>>
MyEclipse 2014 Windows版下载地址
查看>>
解决约瑟夫环的三种方法
查看>>
Pav Metro Store OpenCart 自适应主题模板 ABC-0215
查看>>
【转】jieqi 1.8 调出后台采集的方法
查看>>
sublime text 2中Emmet8个常用的技巧
查看>>
laravel 调试工具
查看>>
从发明新的排序算法开始扯淡
查看>>