using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Threading.Tasks; namespace QuartZ { class Program { static void Main(string[] args) { //加載程序集(dll文件地址),使用Assembly類 Assembly assembly = Assembly.LoadFile(@"D:\ConsoleSample\QuartZ\ClassLib\bin\Debug\ClassLib.dll"); //獲取類型,參數(名稱空間+類) Type type = assembly.GetType("ClassLib.Sample"); //創建該對象的實例,object類型,參數(名稱空間+類) object instance = assembly.CreateInstance("ClassLib.Sample"); //設置Show_Str方法中的參數類型,Type[]類型;如有多個參數可以追加多個 Type[] params_type = new Type[1]; params_type[0] = Type.GetType("System.String"); //設置Show_Str方法中的參數值;如有多個參數可以追加多個 Object[] params_obj = new Object[1]; params_obj[0] = "你好"; //執行Show_Str方法 object value = type.GetMethod("Show_Str", params_type).Invoke(instance, params_obj); Console.WriteLine(value); //Nuget下載QuartZ Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //首先創建一個作業調度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler(); //創建出來一個具體的作業 IJobDetail job = JobBuilder.Create<JobDemo>().Build(); //NextGivenSecondDate:如果第一個參數為null 第二個參數則表明當前時間往后推遲2秒的時間點。 DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 2); DateTimeOffset endTime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddHours(2), 3); //創建並配置一個觸發器 //每三秒執行一次,一共執行100次,開始執行時間設定在當前時間, //結束時間我設定在2小時后;超過兩小時不管有沒有執行100次,都不執行了。 ISimpleTrigger trigger = (ISimpleTrigger)TriggerBuilder.Create().StartAt(startTime).EndAt(endTime) .WithSimpleSchedule(x => x.WithIntervalInSeconds(3).WithRepeatCount(100)) .Build(); //加入作業調度池中 sched.ScheduleJob(job, trigger); //開始運行 sched.Start(); Console.ReadKey(); } } public class JobDemo : IJob { /// <summary> /// 這里是作業調度每次定時執行方法 /// </summary> /// <param name="context"></param> public void Execute(IJobExecutionContext context) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ClassLib { class Sample { public string Show_Str(string str) { if (string.IsNullOrEmpty(str)) { return "無數據"; } else { return "你傳入的參數是:" + str; } } } }