亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#定時(shí)器組件FluentScheduler用法

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

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

最新評(píng)論