1. 程式人生 > >FluentScheduler——輕量級定時任務調度

FluentScheduler——輕量級定時任務調度

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)
        {
            
//兩個參數分別: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(); } } }
program.cs

二、Web中使用

1、任務邏輯

技術分享
using System;
using System.Diagnostics;
using System.Threading;
using FluentScheduler;

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

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——輕量級定時任務調度