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