Quartz定時任務+window服務的簡單應用
阿新 • • 發佈:2020-09-04
- 首頁在專案中安裝Quartz的Nuget包
-
新建一個任務, 也可以稱為作業
public class MyJob : IJob { private int _Count = 0; public MyJob() { this._Count = new Random().Next(100, 999); Console.WriteLine("_count = " +this._Count); } public async Task Execute(IJobExecutionContext context) {
MyJob - 把任務和一個觸發器關聯起來
public class DispatcherManager { public async static Task Init() { StdSchedulerFactory factory = new StdSchedulerFactory(); IScheduler scheduler = await factory.GetScheduler(); await scheduler.Start(); //建立作業 IJobDetail jobdetail = JobBuilder.Create<MyJob>() .WithIdentity("testjob", "group1")//起名稱 .WithDescription("this is testjob") .Build(); //建立觸發器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("testjob", "group1")//group1必須保持一致 //.StartAt(DateTime.Now.AddSeconds(2))//那個時間啟動 .StartNow() //這個是馬上啟動 .WithCronSchedule("5/10 * * * * ?")//時間規則 .WithDescription("this is testjob`s trigger") .Build(); //非同步執行 await scheduler.ScheduleJob(jobdetail,trigger); //Console.WriteLine("作業完成"); } }
- 呼叫執行
static void Main(string[] args) { try { DispatcherManager.Init().GetAwaiter().GetResult(); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.Read(); }
- 新建一個window 服務專案
- 在service中呼叫Init();
- 設定服務名稱
-
安裝與解除安裝服務: 找到自己的專案路徑 下 bin\debug 下的xxxService.exe檔案
管理員身份開啟cmd //安裝服務 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil "自己專案路徑"\test.WindowsService.exe //解除安裝服務 C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil /u "自己專案路徑"\test.WindowsService.exe
- 現在這個服務就可以在系統服務中看到了,啟動它, 就會定時執行你寫好的任務了。是不是很簡單呢??