FluentScheduler——輕量級定時任務調度
阿新 • • 發佈:2017-08-15
diag 輕量 filters run ons get threading 每天 tab
安裝:FluentScheduler
Install-Package FluentScheduler
一、控制臺中使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FluentScheduler; namespace ConsoleApp { class Program { static void Main(string[] args) {program.cs//兩個參數分別:Job、調度時間 JobManager.AddJob(() => { //任務邏輯 Console.WriteLine("Timer task,current time:{0}", DateTime.Now); }, t => { //時間 //從程序啟動開始執行,然後每秒鐘執行一次 t.ToRunNow().AndEvery(1).Seconds(); ////帶有任務名稱的任務定時器 //t.WithName("TimerTask").ToRunOnceAt(DateTime.Now.AddSeconds(5)); }); Console.ReadKey(); } } }
二、Web中使用
1、任務邏輯
using System; using System.Diagnostics; using System.Threading; using FluentScheduler;MyJobnamespace WebApp.Models { public class MyJob:Registry { public MyJob() { // 每2秒一次循環 Schedule<MyJob1>().ToRunNow().AndEvery(2).Seconds(); // 5秒後,只一次 Schedule<MyOtherJob>().ToRunOnceIn(5).Seconds(); //每天晚上21:15分執行 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); //先執行第一個Job、再執行第二個Job;完成後等5秒繼續循環 Schedule<MyFirstJob>().AndThen<MySecoundJob>().ToRunNow().AndEvery(5).Seconds(); } } public class MyJob1 : IJob { void IJob.Execute() { Trace.WriteLine("循環每2秒執行一次;現在時間是:" + DateTime.Now); } } public class MyOtherJob : IJob { void IJob.Execute() { Trace.WriteLine("5秒後只執行一次 ,現在時間是:" + DateTime.Now); } } public class MyFirstJob : IJob { void IJob.Execute() { Trace.WriteLine("執行第一個 Job ,現在時間是:" + DateTime.Now); } } public class MySecoundJob : IJob { void IJob.Execute() { Trace.WriteLine("執行第二個 Job ,現在時間是:" + DateTime.Now); } } }
2、初始化
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; using FluentScheduler; using WebApp.Models; namespace WebApp { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); JobManager.Initialize(new MyJob()); } } }Global.asax.cs
源碼:
https://github.com/fluentscheduler/FluentScheduler
FluentScheduler——輕量級定時任務調度