C#使用FluentScheduler實(shí)現(xiàn)觸發(fā)定時(shí)任務(wù)
寫在前面
FluentScheduler是.Net平臺下的一個(gè)自動任務(wù)調(diào)度組件,以前經(jīng)常用的是Quarz.Net,相對而言FluentScheduler的定時(shí)配置更為直觀,可直接用接口進(jìn)行參數(shù)化設(shè)置,對Cron表達(dá)式有恐懼癥的人來說簡直就是福音,使用起來非常方便。
老規(guī)矩從NuGet獲取該組件

代碼實(shí)現(xiàn)
public class SchedulerTester
{
public static void TestAddJob()
{
JobManager.Initialize();
JobManager.AddJob(
() => Console.WriteLine("1 minutes just passed."),
s => s.ToRunEvery(1).Minutes()
);
}
public static void TestUseRegistry()
{
var registry = new Registry();
registry.Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
registry.Schedule<MyJob>().ToRunOnceIn(5).Seconds();
registry.Schedule(() => Console.WriteLine("It's 9:15 PM now.")).ToRunEvery(1).Days().At(21, 15);
//registry.Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
registry.Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Seconds();
registry.Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
JobManager.Initialize(registry);
}
public static void TestMyRegistry()
{
JobManager.Initialize(new MyRegistry());
}
}
public class MyRegistry : Registry
{
public MyRegistry()
{
// Schedule an ITask to run at an interval
Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
// Schedule an ITask to run once, delayed by a specific time interval.
Schedule<MyJob>().ToRunOnceIn(5).Seconds();
// Schedule a simple task to run at a specific time
Schedule(() => Console.WriteLine("Timed Task - Will run every day at 9:15pm: " + DateTime.Now)).ToRunEvery(1).Days().At(21, 15);
// Schedule a more complex action to run immediately and on an monthly interval
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);
// Schedule a job using a factory method and pass parameters to the constructor.
Schedule(() => new MyComplexJob("Foo", DateTime.Now)).ToRunNow().AndEvery(2).Seconds();
//Schedule multiple tasks to be run in a single schedule
Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(1).Minutes();
}
}
public class MyJob : IJob
{
public void Execute()
{
Console.WriteLine("MyJob is Executed");
}
}
public class MyOtherJob : IJob
{
public void Execute()
{
Console.WriteLine("MyOtherJob is Executed");
}
}
public class MyComplexJob : IJob
{
private string _name { get; set; }
private DateTime _date { get; set; }
public MyComplexJob(string name, DateTime dateTime)
{
this._name = name;
this._date = dateTime;
}
public void Execute()
{
Console.WriteLine($"MyComplexJob is Executed, name is {_name}, datetime:{_date.ToShortDateString()}");
}
}調(diào)用示例:
SchedulerTester.TestUseRegistry(); SchedulerTester.TestMyRegistry(); SchedulerTester.TestAddJob();
執(zhí)行結(jié)果



到此這篇關(guān)于C#使用FluentScheduler實(shí)現(xiàn)觸發(fā)定時(shí)任務(wù)的文章就介紹到這了,更多相關(guān)C# FluentScheduler觸發(fā)定時(shí)任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#.NET實(shí)現(xiàn)網(wǎng)頁自動登錄的方法
這篇文章主要介紹了C#.NET實(shí)現(xiàn)網(wǎng)頁自動登錄的方法,以實(shí)例形式分析了C#實(shí)現(xiàn)點(diǎn)擊自動登錄的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
C#實(shí)現(xiàn)Array添加擴(kuò)展實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)Array添加擴(kuò)展,對C#初學(xué)者有不錯的參考價(jià)值,需要的朋友可以參考下2014-08-08
C#利用ms office實(shí)現(xiàn)office轉(zhuǎn)pdf的示例代碼
這篇文章主要介紹了C#利用ms office實(shí)現(xiàn)office轉(zhuǎn)pdf的詳細(xì)方法,文中通過代碼示例和圖文講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-09-09
C#中foreach原理以及模擬的實(shí)現(xiàn)
這篇文章主要介紹了C#中foreach原理以及模擬的實(shí)現(xiàn)方法,備有詳盡的注釋,便于深入理解C#原理,需要的朋友可以參考下2014-10-10

