在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器。
经过多番查找搜索,终于找到一下比较好用的任务定时器–FluentScheduler,你可以通过Nuget来引用,用程序包管理器执行如下命令即可安装。
Install-Package FluentScheduler
此组件可以在C#和ASP.NET程序中使用,使用方法很简单,官方有使用案例:
FluentScheduler 中 对象: IJob(工作)、Registry(注册)、Schedule(计划)
首先做一个简单的实例
using FluentScheduler;
/// <summary>
/// 工作类
/// </summary>
public class MyJob : IJob
{
public void Execute()
{
//编写需要工作的内容
//比如输出一句话
Console.WriteLine("执行工作!");
}
}
using FluentScheduler;
/// <summary>
/// 注册表
/// </summary>
public class MyRegistry : Registry
{
//无参构造函数
public MyRegistry()
{
//安排任务运行在一个区间
Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
// 安排任务运行一次,由一个特定的时间间隔延迟。
Schedule<MyJob>().ToRunOnceIn(5).Seconds();
//安排一个简单的任务在一个特定的时间运行
Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);
//安排一个更复杂的行动,立即运行和每月的时间间隔
Schedule(() =>
{
Console.WriteLine("Complex Action Task Starts: " + DateTime.Now);
Thread.Sleep(1000);
Console.WriteLine("Complex Action Task Ends: " + DateTime.Now);
}).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
//计划多个任务在一个单一的日程安排中运行
Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
}
}
在ASP.NET程序的Global.asax文件中,首先初始化管理器,这样定时器就开启了。
protected void Application_Start()
{
JobManager.Initialize(new MyRegistry());
}
以上是第一种写法,下面介绍第二种写法,这里执行多个任务 不同时间段
protected void Application_Start()
{
JobManager.AddJob<MyJob>(t=>t.ToRunEvery(1).Days().At(24,00));//每天的凌晨12点 执行
JobManager.AddJob<MyOtherJob>(t => t.ToRunEvery(1).Months().OnTheLastDay().At(8,30));//每个月的最后一天早上八点半 执行
JobManager.Start();//启动任务管理器
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。