在C#WINFORM或者是ASP.NET的WEB應(yīng)用程序中,根據(jù)各種定時任務(wù)的需求,比如:每天的數(shù)據(jù)統(tǒng)計,每小時刷新系統(tǒng)緩存等等,這個時候我們得應(yīng)用到定時器。
邛崍網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,邛崍網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為邛崍成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的邛崍做網(wǎng)站的公司定做!
經(jīng)過多番查找搜索,終于找到一下比較好用的任務(wù)定時器–FluentScheduler,你可以通過Nuget來引用,用程序包管理器執(zhí)行如下命令即可安裝。
Install-Package FluentScheduler
此組件可以在C#和ASP.NET程序中使用,使用方法很簡單,官方有使用案例:
FluentScheduler 中 對象: IJob(工作)、Registry(注冊)、Schedule(計劃)
首先做一個簡單的實例
using FluentScheduler; ////// 工作類 /// public class MyJob : IJob { public void Execute() { //編寫需要工作的內(nèi)容 //比如輸出一句話 Console.WriteLine("執(zhí)行工作!"); } }
using FluentScheduler; ////// 注冊表 /// public class MyRegistry : Registry { //無參構(gòu)造函數(shù) public MyRegistry() { //安排任務(wù)運行在一個區(qū)間 Schedule().ToRunNow().AndEvery(2).Seconds(); // 安排任務(wù)運行一次,由一個特定的時間間隔延遲。 Schedule ().ToRunOnceIn(5).Seconds(); //安排一個簡單的任務(wù)在一個特定的時間運行 Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15); //安排一個更復(fù)雜的行動,立即運行和每月的時間間隔 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); //計劃多個任務(wù)在一個單一的日程安排中運行 Schedule ().AndThen ().ToRunNow().AndEvery(5).Minutes(); } }
在ASP.NET程序的Global.asax文件中,首先初始化管理器,這樣定時器就開啟了。
protected void Application_Start() { JobManager.Initialize(new MyRegistry()); }
以上是第一種寫法,下面介紹第二種寫法,這里執(zhí)行多個任務(wù) 不同時間段
protected void Application_Start() { JobManager.AddJob(t=>t.ToRunEvery(1).Days().At(24,00));//每天的凌晨12點 執(zhí)行 JobManager.AddJob (t => t.ToRunEvery(1).Months().OnTheLastDay().At(8,30));//每個月的最后一天早上八點半 執(zhí)行 JobManager.Start();//啟動任務(wù)管理器 }