定时任务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 ...
随机推荐
- Java-编程规范与代码风格
阿里巴巴 Java 开发手册 https://github.com/alibaba/p3c https://developer.aliyun.com/special/tech-java 唯品会规范 J ...
- fileBeat的简单使用
Beat的简单使用 Filebeat配置 Output 常见日志格式封装 简单使用filebeat格式化nginx日志 Filebeat的配置: # 修改filebeat.yml # vim file ...
- com.alibaba.fastjson.JSONObject;的使用
转: com.alibaba.fastjson.JSONObject;的使用 2018-11-04 23:51:23 mameng1998 阅读数 6404更多 分类专栏: java 1 POM ...
- Greenwich.SR2版本的Spring Cloud Feign实例
前面我们了解了Spring Cloud Ribbon和Hystrix,在使用上它们基本上会成队出现,那么是不是可以把它们组合起来使用?而且我们发现,在服务消费方a-beautiful-client里通 ...
- 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_10-课程详情页面静态化-课程详情模型数据查询接口
根据课程详情页面写一个获取数据模型的接口 目录的数据来自于课程计划表 右侧是课程的图片 需要写一个接口 获取课程相关的所有信息. 所以就需要一个模型类,里面包含了基本信息.图片信息.等各种详情页面的信 ...
- 静态文件cdn自解析生成相对路径
一.场景和目标: 用户上传一个包含 index.html 的静态资源压缩包,资源内所有文件都是相互依赖的,不需要用户对内部文件内容做任何特殊处理,仅通过服务端逻辑处理达到用户访问 http: ...
- Qt编写自定义控件51-可输入仪表盘
一.前言 这个控件是近期定制的控件,还是比较实用的控件之一,用户主要是提了三点需求,一点是切换焦点的时候控件放大突出显示,一点是可直接输入或者编辑值,还有一点是支持上下键及翻页键和鼠标滚轮来动态修改值 ...
- 【423】COMP9024 Revision
目录: array '\0' 与 EOF 二维字符数组(字符串数组) 1. array: 参考:C 数组 参考:C 字符串 参考:C笔记之NULL和字符串结束符'\0'和EOF 总结:[个人理解,可能 ...
- Lombok子类与父类的@Builder注解冲突
解决方法之一:去掉父类的@builder 缺点:父类不能使用Builder构造器模式 来源:https://www.cnblogs.com/lori/p/10266508.html
- Laravel 项目开发环境配置
1.首先安装Laravel 依赖管理包工具 Composer (前提是本地装好了PHP php -v) php -r "copy('https://install.phpcomposer. ...