C#定時(shí)器組件FluentScheduler用法
一、定時(shí)任務(wù)調(diào)度的方法或者組件:
任務(wù)定時(shí)器–FluentScheduler組件可以在C#和ASP.NET程序中使用,使用方法很簡(jiǎn)單,官方有使用案例:
FluentScheduler 中 對(duì)象: IJob(工作)、Registry(注冊(cè))、Schedule(計(jì)劃)
二、實(shí)例
項(xiàng)目需要一個(gè)按時(shí)執(zhí)行的任務(wù),每隔幾分鐘執(zhí)行一個(gè),或者每隔幾小時(shí)執(zhí)行一次等等,這個(gè)時(shí)候就需要一個(gè)定時(shí)的功能,最簡(jiǎn)單的就是用Timer自己寫一個(gè),但是自己寫的性能等各方面有可能不健全等等,而現(xiàn)在開(kāi)源的庫(kù)也越來(lái)越多,功能也越來(lái)越好,直接拿來(lái)主義。
1.NuGet下載FluentScheduler控件
FluentScheduler定時(shí)任務(wù)庫(kù),通過(guò)nuget引用,可以設(shè)置各種事件間隔,,超級(jí)方便簡(jiǎn)單。
2.編寫一個(gè)注冊(cè)表。繼承Registry類
using FluentScheduler; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrameTest.test { public class MyRegistry : Registry { public MyRegistry() { // 每天執(zhí)行一次(這里是在每天的下午 15:40 分執(zhí)行),可以不用類,直接虛擬方法 Schedule(() => Console.WriteLine("It's 15:42 now.")).ToRunEvery(1).Days().At(15, 42); // 每?jī)擅雸?zhí)行一次(指定一個(gè)時(shí)間間隔運(yùn)行,根據(jù)自己需求,可以是秒、分、時(shí)、天、月、年等。) Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds(); // 每五秒執(zhí)行一次(延遲一個(gè)指定時(shí)間間隔執(zhí)行一次計(jì)劃任務(wù)) Schedule<MyJob>().ToRunOnceIn(5).Seconds(); // 每月執(zhí)行一次(這里是在每月的第一周的周一3點(diǎn)執(zhí)行) Schedule<MyJob>().ToRunNow().AndEvery(1).Months().OnTheLast(DayOfWeek.Friday).At(16, 0); // 構(gòu)造函數(shù)執(zhí)行 Schedule(() => new MyOtherJob("Foo")).ToRunNow().AndEvery(2).Seconds(); // 先執(zhí)行第一個(gè)Job、再執(zhí)行第二個(gè)Job;完成后等5秒繼續(xù)循環(huán) Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes(); } } }
3.編寫定時(shí)執(zhí)行任務(wù),工作類
根據(jù)使用方法,是否實(shí)現(xiàn)IJob接口
public class MyJob : IJob { public void Execute() { Console.WriteLine($"MyJob 當(dāng)前時(shí)間:{DateTime.Now}"); } } public class MyOtherJob : IJob { private string Name; public MyOtherJob(string name) { Name = name; } public void Execute() { Console.WriteLine($"MyOtherJob 姓名:{Name} 當(dāng)前時(shí)間:{DateTime.Now}"); } }
4.初始化定時(shí)器
定時(shí)任務(wù)寫好之后只需要在Main中引用就可以了
// static void Main(string[] args) JobManager.Initialize(new MyRegistry());
在ASP.NET程序的Global.asax文件中,首先初始化管理器,這樣定時(shí)器就開(kāi)啟了。
protected void Application_Start() { JobManager.Initialize(new MyRegistry()); }
以上是第一種寫法,下面介紹第二種寫法,這里執(zhí)行多個(gè)任務(wù) 不同時(shí)間段
protected void Application_Start() { JobManager.AddJob<MyJob>(t=>t.ToRunEvery(1).Days().At(24,00));//每天的凌晨12點(diǎn) 執(zhí)行 JobManager.AddJob<MyOtherJob>(t => t.ToRunEvery(1).Months().OnTheLastDay().At(8,30));//每個(gè)月的最后一天早上八點(diǎn)半 執(zhí)行 JobManager.Start();//啟動(dòng)任務(wù)管理器 }
到此這篇關(guān)于C#定時(shí)器插件FluentScheduler的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于私鑰加密公鑰解密的RSA算法C#實(shí)現(xiàn)方法
這篇文章主要介紹了基于私鑰加密公鑰解密的RSA算法C#實(shí)現(xiàn)方法,是應(yīng)用非常廣泛,需要的朋友可以參考下2014-08-08C# winfrom 模擬ftp文件管理實(shí)現(xiàn)代碼
從網(wǎng)上找到的非常好用的模擬ftp管理代碼,整理了一下,希望對(duì)需要的人有幫助2014-01-01C#對(duì)稱加密(AES加密)每次生成的結(jié)果都不同的實(shí)現(xiàn)思路和代碼實(shí)例
這篇文章主要介紹了C#對(duì)稱加密(AES加密)每次生成的結(jié)果都不同的實(shí)現(xiàn)思路和代碼實(shí)例,每次解密時(shí)從密文中截取前16位,這就是實(shí)現(xiàn)隨機(jī)的奧秘,本文同時(shí)給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-07-07C#基于ScottPlot實(shí)現(xiàn)可視化的示例代碼
這篇文章主要為大家詳細(xì)介紹了C#如何基于ScottPlot實(shí)現(xiàn)可視化效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法
這篇文章主要介紹了C#將圖片存放到SQL SERVER數(shù)據(jù)庫(kù)中的方法,以實(shí)例形式較為詳細(xì)的分析了C#保存圖片到SQL Server數(shù)據(jù)庫(kù)的具體步驟與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09使用C#連接并讀取MongoDB數(shù)據(jù)庫(kù)
這篇文章介紹了使用C#連接并讀取MongoDB數(shù)據(jù)庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03