Quarz的xml配置和程序集引用我覺得有點多,對於只需要執行一些簡單任務的小白簡直不能忍,無意間看到了這個FluentScheduler,於是動手試了試。
話不多說,直接上代碼:
using System; using FluentScheduler; namespace HpTest.Fluent { public class Klass { public Klass() { JobManager.Initialize(new MyRegistry()); } } public class MyRegistry : Registry { public MyRegistry() { // Schedule an ITask to run at an interval //Schedule<MyTask>().ToRunNow().AndEvery(2).Seconds(); // Schedule an ITask to run once, delayed by a specific time interval. //Schedule<MyTask>().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); // Console.WriteLine("Complex Action Task Ends: " + DateTime.Now); //}).ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0); //Schedule multiple tasks to be run in a single schedule Schedule<MyTask>().AndThen<MyOtherTask>().ToRunNow().AndEvery(5).Seconds(); } } public class MyTask : IJob { public static int MyTaskExeCount; public void Execute() { Console.WriteLine("這是MyTask正在第"+ MyTaskExeCount + "次執行"); MyTaskExeCount += 1; } } public class MyOtherTask : IJob { public void Execute() { Console.WriteLine("這是MyOtherTask正在執行"); } } }
然后直接在控制台Program中調用:
class Program { static void Main(string[] args) { new Klass(); Console.ReadKey(); } }
結果: