欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#定時器組件FluentScheduler用法

 更新時間:2022年06月09日 10:47:01   作者:springsnow  
這篇文章介紹了C#定時器插件FluentScheduler的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、定時任務(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)文章

最新評論