官方學習文檔:http://www.quartz-scheduler.net/documentation/index.html
官方的源代碼下載:http://sourceforge.net/projects/quartznet/files/quartznet/
nuget安裝包地址: https://www.nuget.org/packages/Quartz/
不會寫cron可以自動生成 http://cron.qqe2.com/
在程序包管理器控制台 輸入Install-Package Quartz -Version 3.0.6
倒包

下面是調度的實例部分
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Quartz; using Quartz.Impl; namespace ConsoleApp3 { public class Scheduler { private static IScheduler scheduler; public static IScheduler Current { get { if (scheduler==null) { scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; } return scheduler; } } /// <summary> /// 啟動程序 /// </summary> public void Start() { Current.Start(); task(); } /// <summary> /// 停止程序 /// </summary> public void Stop() { Current.Shutdown(); } /// <summary> /// 重啟程序 /// </summary> public void Restart() { Current.Shutdown(); scheduler = null; Current.Start(); } /// <summary> /// 任務 /// </summary> public void task() { Job<ORders>("order", "0/1 * * * * ? ");//corn規則 } /// <summary> /// 初始化任務 /// </summary> public void Job<T>(string uid, string cronExpression)where T : IJob { //初始化創建作業 var jobuilder = JobBuilder.Create<T>();//約束類型為 Ijob //根據ID 標識觸發器 構建調度 var job= jobuilder.WithIdentity(uid, uid).Build(); var cron = (ICronTrigger)TriggerBuilder.Create() //初始化觸發器 .WithIdentity("trigger" + uid, "group" + uid)//標識觸發器 .StartNow()//觸發第一次運行 .WithCronSchedule(cronExpression)//觸發規則 .Build();//構建調度 //將創建的類線程和規則關聯 Current.ScheduleJob(job, cron); } } }
要每秒執行的調度方法 Execute 去實現
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Quartz; namespace ConsoleApp3 { public class ORders : IJob { public Task Execute(IJobExecutionContext context) { Task task = null; Console.WriteLine("wewr"); return task; } } }
接着使用Topshelf 創建Windows 服務
官網 http://topshelf-project.com/
git http://github.com/topshelf/Topshelf/downloads
在 nuget 搜索 Topshelf 包
在包管理工具中安裝 輸入Install-Package Topshelf -Version 4.0.4.161-develop
也可以 加日志 Install-Package Topshelf.Log4Net
官網給的例子 http://docs.topshelf-project.com/en/latest/configuration/quickstart.html
通過下面的實例安裝服務
using System; using Topshelf; namespace ConsoleApp3 { class Program { static void Main(string[] args) { try { HostFactory.Run(x => { x.Service<give>(s => { s.ConstructUsing(name => new give()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.RunAsLocalSystem(); x.SetDescription("測試服務");//服務描述 x.SetDisplayName("Test.y");//顯示服務名 x.SetServiceName("Test.y");//服務名稱 }); } catch (Exception ex) { Console.WriteLine(string.Format("服務啟動失敗,原因:{0}", ex.ToString())); } new Scheduler().Start(); Console.ReadKey(); } } /// <summary> /// 服務要跑的內容 /// </summary> class give { public void Start() { try { new Scheduler().Start();//調度啟動方法 } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine("執行Start方法,啟動成功"); } public void Stop() { } } }
下面我們制作安裝服務bat 文件
@echo off
rem 安裝Windows服務
E:\Service\bin\Release\ConsoleApp3.exe install
rem 啟動服務
E:\Service\bin\Release\ConsoleApp3.exe start
@echo on
pause
卸載服務
@echo off
rem 卸載Windows服務
E:\Service\bin\Release\ConsoleApp3.exe
uninstall @echo on pause
未完待續。。。