定时任务FluentScheduler
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的更多相关文章
- 定时任务FluentScheduler 学习笔记 .net
第一步添加引用 GitHub源码地址 与详细用法 https://github.com/fluentscheduler/FluentScheduler 下面开始简单的实现 /// <summar ...
- 优秀 .NET 开源项目集锦
Github 地址: https://github.com/jasonhua95/awesome-dotnet-core awesome-dotnet-core .NET Core框架.库和软件的中文 ...
- C#定时任务组件之FluentScheduler
FluentScheduler是.NET开源处理定时任务组件 1.任务的创建注册 public static void TaskActionByMinutes(Action action, int c ...
- .NET定时任务执行管理器开源组件–FluentScheduler
在日常项目里通常会遇到定时执行任务的需求,也就是定时器..NET Framework里关于定时器的类有3个,分别是System.Windows.Forms.Timer.System.Timers.Ti ...
- [转]推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler
在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...
- ASP.NET MVC 使用FluentScheduler做定时任务
源代码地址: https://github.com/fluentscheduler/FluentScheduler 使用NuGet安装FluentScheduler 这是我实际项目中用到的代码,也可看 ...
- C#定时任务之FluentScheduler
一.业务需求 平台首页,有几个指标统计,产品不要求实时性,觉得一天更新一次可以接受. 最后决定用FluentScheduler定时执行统计,redis缓存结果. 每天晚上1点进行定时任务统计,将统计结 ...
- C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
必须JobManager初始化 方式1: public void Start() { JobManager.AddJob(() => FetchingDa ...
随机推荐
- MySQL数据库可以用任意ip连接访问的方法
> use mysql; > update user set host='%' where host='localhost'; > flush privileges;
- python-pptx add_image_picture
- 【Java】Unicode和字符串互转
Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一 ...
- [转][C#]Oracle 连接错误的解决
错误1: .NET连接oracle,提示错误OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用 两个原因: 1. 权限,把 Oracle 所在目录权限设置成 authenticat ...
- Bitmap之getDensity和setDensity函数
package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...
- 123456---com.twoapp.huanYingMotro--- 幻影摩托
123456---com.twoapp.huanYingMotro--- 幻影摩托
- sql-获取重复和删除重复数据
//获取相同用户名的数据 //删除相同的数据,保留最大的id或者最小的id min(id) delete from user where id not in(select max(id) from u ...
- JWT(JSON Web Tokens)操作帮助类
载荷实体: /// <summary> /// JWT载荷实体 /// </summary> public sealed class JWTPlayloadInfo { /// ...
- execl文件读取封装
前言:做自动化常用的公共方法 注:第一次使用记得先 pip install xlrd 模块import xlrd class ReadExecl(): def __init__(self,filena ...
- cv2---imread---error
when I use the cv2.imred() which is absolute path path = r'C:\\Users\\hp\\Desktop\\常用Python代码\\mycv ...