1、Nuget 安装包

2、创建3个不同的任务

    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);
}
}

3、添加任务注册类,用于在Global中注册

    public class Demo : Registry
{
public Demo()
{
//利用反射获取所有的任务来执行
var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob)))).ToArray();
foreach (Type type in types)
{
//一个任务一个线程
Task.Factory.StartNew(() =>
{
IJob ss = (IJob)Activator.CreateInstance(type);
Schedule(() =>
{
ss.Execute();
}).ToRunNow().AndEvery().Seconds();
});
} //// Schedule an IJob to run at an interval
//// 立即执行每两秒一次的计划任务。(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
//Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds(); //// Schedule an IJob to run once, delayed by a specific time interval
//// 延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
//Schedule<MyJob>().ToRunOnceIn(5).Seconds(); //// Schedule a simple job to run at a specific time
//// 在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)
//Schedule(() => Trace.WriteLine("It's 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10); //Schedule(() =>
//{ // // 做你想做的事儿。
// Trace.WriteLine("It's 1:10 PM now."); //}).ToRunEvery(1).Days().At(13, 10); //// Schedule a more complex action to run immediately and on an monthly interval
//// 立即执行一个在每月的星期一 3:00 的计划任务(可以看出来这个一个比较复杂点的时间,它意思是它也能做到!)
//Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0); //// Schedule multiple jobs to be run in a single schedule
//// 在同一个计划中执行两个(多个)任务
//Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes(); }
}

4、在 Global.asax 中注册

            JobManager.Initialize(new Demo());

其它:

也可以手动来进行启动、停止

        /// <summary>
/// 启动定时任务
/// </summary>
public static void StartUp()
{
JobManager.Initialize(new Demo());
} /// <summary>
/// 停止定时任务
/// </summary>
public static void Stop()
{
JobManager.Stop();
}

扩展:自定义时间及是否启用

    public class BaseJob
{
public int Second { get; set; } public bool Enabled { get; set; } public virtual void Execute() {
}
}
    public class MyJob : BaseJob
{
public MyJob() {
Second = ;
Enabled = true;
}
public override void Execute()
{
Trace.WriteLine("MyJob 现在时间是:" + DateTime.Now);
}
}
    public class MyOtherJob : BaseJob
{
public MyOtherJob()
{
Second = ;
Enabled = true;
}
public override void Execute()
{
Trace.WriteLine("MyOtherJob 这是另一个 Job ,现在时间是:" + DateTime.Now);
}
}
        public Demo()
{
//利用反射获取所有的任务来执行
//var types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IJob)))).ToArray();
var types = Assembly.GetExecutingAssembly().GetTypes()
.Where(type => !String.IsNullOrEmpty(type.Namespace))
.Where(type=>type.BaseType == typeof(BaseJob));
foreach (Type type in types)
{
BaseJob ss = (BaseJob)Activator.CreateInstance(type);
if (ss.Enabled)
{
//一个任务一个线程
Task.Factory.StartNew(() =>
{
Schedule(() =>
{
ss.Execute();
}).ToRunNow().AndEvery(ss.Second).Seconds();
});
}
}
}

定时任务FluentScheduler的更多相关文章

  1. 定时任务FluentScheduler 学习笔记 .net

    第一步添加引用 GitHub源码地址 与详细用法 https://github.com/fluentscheduler/FluentScheduler 下面开始简单的实现 /// <summar ...

  2. 优秀 .NET 开源项目集锦

    Github 地址: https://github.com/jasonhua95/awesome-dotnet-core awesome-dotnet-core .NET Core框架.库和软件的中文 ...

  3. C#定时任务组件之FluentScheduler

    FluentScheduler是.NET开源处理定时任务组件 1.任务的创建注册 public static void TaskActionByMinutes(Action action, int c ...

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

    在日常项目里通常会遇到定时执行任务的需求,也就是定时器..NET Framework里关于定时器的类有3个,分别是System.Windows.Forms.Timer.System.Timers.Ti ...

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

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

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

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

  7. ASP.NET MVC 使用FluentScheduler做定时任务

    源代码地址: https://github.com/fluentscheduler/FluentScheduler 使用NuGet安装FluentScheduler 这是我实际项目中用到的代码,也可看 ...

  8. C#定时任务之FluentScheduler

    一.业务需求 平台首页,有几个指标统计,产品不要求实时性,觉得一天更新一次可以接受. 最后决定用FluentScheduler定时执行统计,redis缓存结果. 每天晚上1点进行定时任务统计,将统计结 ...

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

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

随机推荐

  1. DOM 事件有哪些阶段?谈谈对事件代理的理解

    分为三大阶段:捕获阶段--目标阶段--冒泡阶段 事件代理简单说就是:事件不直接绑定到某元素上,而是绑定到该元素的父元素上,进行触发事件操作时(例如'click'),再通过条件判断,执行事件触发后的语句 ...

  2. Windows 下 把EXE 程序变成服务运行

    1. 下载  instsrv.exe 和 srvany.exe   我下载的地址  [点击打开链接][https://www.cr173.com/soft/64394.html] 2. cmd  cd ...

  3. linux工程管理软件—make

    一.make概述     make是一种代码维护工具make工具会根据makefile文件定义的规则和步骤,完成整个软件项目的代码维护工作.一般用来简化编译工作,可以极大地提高软件开发的效率. win ...

  4. Benchmark result without MONITOR running: Benchmark result with MONITOR running (redis-cli monitor > /dev/null): 吞吐量 下降约1半 Redis监控工具,命令和调优

    https://redis.io/commands/monitor In this particular case, running a single MONITOR client can reduc ...

  5. Bitmap之getPixel和setPixel函数

    package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...

  6. 取用户中文名 FDM_CUST_USER_NAME_READ_SINGLE

    DATA:lv_first TYPE ad_namefir,      lv_last  TYPE ad_namelas,      lv_full  TYPE ad_namtext.   CALL  ...

  7. jQuery学习二

    1.id选择器: // 4.如果页面中多个元素id相同,jquery只会获取第一个id的jquery对象 var jquery = $('#name'); alert(jquery.val()); v ...

  8. git rev-parse介绍;获取commit id

    git rev-parse master^{commit} 是什么意思 显示master提交的SHA1值 if you want to make sure that the output actual ...

  9. 数据链路层学习之LLDP

    数据链路层学习之LLDP 2013年09月02日 20:38:36 goodluckwhh 阅读数 42323   一.LLDP协议概述 随着网络技术的发展,接入网络的设备的种类越来越多,配置越来越复 ...

  10. vue警告: component lists rendered with v-for should have explicit keys

    warning信息:component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide ...