• .NET定时任务执行管理器开源组件–FluentScheduler


    在日常项目里通常会遇到定时执行任务的需求,也就是定时器。.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,然后回车键即可。如图所示 
      通过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() + " 正在执行任务
    ");
            }
    
            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 使用示例

  • 相关阅读:
    程序员的人生规划
    利用jQuery实现CheckBox全选/全不选/反选
    小程序模板渲染
    小程序数据绑定详情
    fcitx-configtool
    小程序WXML基本使用
    小程序作用域与模块化
    小程序路由篇
    小程序App方法
    小程序中的setData的使用
  • 原文地址:https://www.cnblogs.com/soundcode/p/6230483.html
Copyright © 2020-2023  润新知