日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#定時器組件FluentScheduler用法_C#教程

作者:springsnow ? 更新時間: 2022-08-02 編程語言

一、定時任務調度的方法或者組件:

任務定時器–FluentScheduler組件可以在C#和ASP.NET程序中使用,使用方法很簡單,官方有使用案例:

FluentScheduler 中 對象: IJob(工作)、Registry(注冊)、Schedule(計劃)

二、實例

項目需要一個按時執行的任務,每隔幾分鐘執行一個,或者每隔幾小時執行一次等等,這個時候就需要一個定時的功能,最簡單的就是用Timer自己寫一個,但是自己寫的性能等各方面有可能不健全等等,而現在開源的庫也越來越多,功能也越來越好,直接拿來主義。

1.NuGet下載FluentScheduler控件

FluentScheduler定時任務庫,通過nuget引用,可以設置各種事件間隔,,超級方便簡單。

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()
        {
            // 每天執行一次(這里是在每天的下午 15:40 分執行),可以不用類,直接虛擬方法
            Schedule(() => Console.WriteLine("It's 15:42  now.")).ToRunEvery(1).Days().At(15, 42);

            // 每兩秒執行一次(指定一個時間間隔運行,根據自己需求,可以是秒、分、時、天、月、年等。)
            Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();

            // 每五秒執行一次(延遲一個指定時間間隔執行一次計劃任務)
            Schedule<MyJob>().ToRunOnceIn(5).Seconds();

            // 每月執行一次(這里是在每月的第一周的周一3點執行)
            Schedule<MyJob>().ToRunNow().AndEvery(1).Months().OnTheLast(DayOfWeek.Friday).At(16, 0);

            // 構造函數執行
            Schedule(() => new MyOtherJob("Foo")).ToRunNow().AndEvery(2).Seconds();

            // 先執行第一個Job、再執行第二個Job;完成后等5秒繼續循環
            Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
        }

    }

}

3.編寫定時執行任務,工作類

根據使用方法,是否實現IJob接口

    public class MyJob : IJob
    {
        public void Execute()
        {
            Console.WriteLine($"MyJob  當前時間:{DateTime.Now}");
        }
    }

    public class MyOtherJob : IJob
    {
        private string Name;
        public MyOtherJob(string name)
        {
            Name = name;
        }

        public void Execute()
        {
            Console.WriteLine($"MyOtherJob 姓名:{Name}  當前時間:{DateTime.Now}");
        }
    }

4.初始化定時器

定時任務寫好之后只需要在Main中引用就可以了

//  static void Main(string[] args)
JobManager.Initialize(new MyRegistry());

在ASP.NET程序的Global.asax文件中,首先初始化管理器,這樣定時器就開啟了。

protected void Application_Start()
{
    JobManager.Initialize(new MyRegistry());
}

以上是第一種寫法,下面介紹第二種寫法,這里執行多個任務 不同時間段

protected void Application_Start()
{
    JobManager.AddJob<MyJob>(t=>t.ToRunEvery(1).Days().At(24,00));//每天的凌晨12點 執行 
    JobManager.AddJob<MyOtherJob>(t => t.ToRunEvery(1).Months().OnTheLastDay().At(8,30));//每個月的最后一天早上八點半 執行
    JobManager.Start();//啟動任務管理器
}

原文鏈接:https://www.cnblogs.com/springsnow/p/13158559.html

欄目分類
最近更新