在日常项目里通常会遇到定时执行任务的需求,也就是定时器。.NET Framework里关于定时器的类有3个,分别是System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer。这三个类用法灵活,也各有特点,应对简单的定时需求,用起来很轻松。如果面对复杂应用,比如任务影响窗体UI时就 要考虑多线程操作,多线程就避免不了考虑线程安全问题,这时候用起来就比较麻烦。 
使用FluentScheduler组件,相对来说就轻松多了。FluentScheduler 是一个更精密和复杂的调度组件,它采用多线程操作,不会影响主线程,在线程安全方面它也有很好的处理,任务运行时还可以显式控制。FluentScheduler用起来也很简单,在GitHub上有应用示例FluentScheduler。这里举个简单应用示例。

  1. 获取FluentScheduler Package 
    首先可以使用Nuget程序包管理器获取FluentScheduler Package,在Nuget程序包管理器控制台中输入命令:Install-Package 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<string> 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.示例代码地址 
FluentScheduler 使用示例

.NET定时任务执行管理器开源组件–FluentScheduler的更多相关文章

  1. 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器

    在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...

  2. [转]推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler

    在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...

  3. C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器

    必须JobManager初始化 方式1: public void Start()         {             JobManager.AddJob(() => FetchingDa ...

  4. 英特尔® 硬件加速执行管理器安装指南 — Microsoft Windows*

    介绍 本文将指导您安装英特尔® 硬件加速执行管理器(英特尔® HAXM),这是一款可以使用英特尔® 虚拟化技术(VT)加快 Android* 开发速度的硬件辅助虚拟化引擎(管理程序). 前提条件 英特 ...

  5. 第1组UI组件:布局管理器

    1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...

  6. 【java】浅析java组件中的布局管理器

    这篇博文笔者介绍一下java组件中,常用的布局管理器.java组件中的布局方式有好几十种,所有的这些布局管理器都实现了java.awt.LayoutManager接口.接下来笔者介绍一下常用的5种布局 ...

  7. Android UI组件:布局管理器

    为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常,推荐使用布局管理器来管理组件的分布. ...

  8. [置顶] Android布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 : 在上面的UML图中可以看出, 绝对布局 帧布局 网格布局 相 ...

  9. 5、Java Swing布局管理器(FlowLayout、BorderLayout、CardLayout、BoxLayout、GirdBagLayout 和 GirdLayout)

    5.Java-Swing常用布局管理器       应用布局管理器都属于相对布局,各组件位置可随界面大小而相应改变,不变的只是其相对位置,布局管理器比较难以控制,一般只在界面大小需要改是才用,但即使这 ...

随机推荐

  1. AMD and CMD are dead之KMD规范

    What's KMD? 乱世出英雄,KMD名字的由来充满了杀气. Kill AMD and CMD KMD为替代混乱的AMD和CMD世界而生,一统天下.或者让这个混乱的世界更加混乱,导致: KMD A ...

  2. html5视频播放插件

    对于HTML5提供的新特性,给前端开发者带来了巨大的激情与动力,减轻了开发者的代码累赘,大大提高了网站性能以及网页的渲染效果.对于低版本的浏览器,由于生产厂商的原因,许多PC端低版本的浏览器还不兼容H ...

  3. 网络分析之Pgrouting(转载)

    网上关于Pgrouting的使用介绍太简单了,这里想详细的总结一下Pgrouting的使用,其实主要参照官方文档:http://workshop.pgrouting.org/ 第一步:配置环境 关于P ...

  4. MyEclipse快捷键大全

    MyEclipse 快捷键1(CTRL)Ctrl+1 快速修复Ctrl+D: 删除当前行Ctrl+Q 定位到最后编辑的地方Ctrl+L 定位在某行Ctrl+O 快速显示 OutLineCtrl+T 快 ...

  5. RSA算法及其在iOS中的使用

    因为项目中需要传输用户密码,为了安全需要用RSA加密,所以就学习了下RSA加密在iOS中的应用. 关于RSA的历史及原理,下面的两篇文章讲的很清楚了:  http://www.ruanyifeng.c ...

  6. OpenGL FrameBufferCopy相关Api比较(glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D)

    OpenGL FrameBufferCopy相关Api比较 glCopyPixels,glReadPixels,glCopyTexImage2D,glFramebufferTexture2D 标题所述 ...

  7. spring-boot 热部署 intellij IDE

    1.使用springloadded插件: 如何使用: a.先在ide里面部署好你的service,( mvn spring-boot:run) b.修改代码, c.command+F9(或build- ...

  8. Android编码规范01

    目标: 掌握Java & Android命名规范 在研究Android源代码的基础上改进命名规范 考核内容 说出四种常用的命名法 比较java和C#的命名规范的不同点 总结: 读不同程序员写的 ...

  9. Spring实现AOP的4种方式

    了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完成的工作和何时需要执行这个工作.2.连接点(Joinpoint):程序能够应用通知的一个“时机”,这些“ ...

  10. MySQL错误日志总结

    MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息.错误日志的命名通常为hostname.err.其中,hostname表示服务器主机名. ...