asp.net下的工作排程套件「Quartz」
一、前言
筆者曾使用 Quartz 撰寫以 Web 應用程式為基礎下的工作排程器,寫法也挺簡單的因此介紹給讀者。
二、開發環境
- 整合開發環境:Visual Studio 2019
- 語言:C#
- .net framework:4.6.2
三、專案架構
Windows 主控台 為基礎下撰寫的範例
圖、專案架構
四、操作步驟
圖、建立 TestJob.cs,輸入底下 程式碼
- 程式碼(C#)
public async Task Execute(IJobExecutionContext context)
{
//輸出 日期(年月日 時分秒)
await Console.Out.WriteLineAsync(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
圖、在 Program.cs 的 main 裡,輸入底下程式碼
- 程式碼(C#)
//建立 工作JOB
var job = JobBuilder.Create<TestJob>().WithIdentity("job1", "group1").Build();
//設定 工作JOB為 立即執行、每秒重複一次 的觸發器
var trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.RepeatForever())
.Build();
var factory = new StdSchedulerFactory();
var scheduler = await factory.GetScheduler();
// 建立 工作排程
await scheduler.ScheduleJob(job, trigger);
// 排程 開始
await scheduler.Start();
Console.ReadKey();
// 排程 結束
await scheduler.Shutdown();
圖、執行結果
五、完整原始碼
- TestJob.cs
public class TestJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
//輸出 日期(年月日 時分秒)
await Console.Out.WriteLineAsync(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
- Program.cs
class Program
{
private static async Task Main(string[] args)
{
//建立 工作JOB
var job = JobBuilder.Create<TestJob>().WithIdentity("job1", "group1").Build();
//設定 工作JOB為 立即執行、每秒重複一次 的觸發器
var trigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(1)
.RepeatForever())
.Build();
var factory = new StdSchedulerFactory();
var scheduler = await factory.GetScheduler();
// 建立 工作排程
await scheduler.ScheduleJob(job, trigger);
// 排程 開始
await scheduler.Start();
Console.ReadKey();
// 排程 結束
await scheduler.Shutdown();
}
}
六、相關連結
使用「Visual Studio 2019」建置 主控台 Console 應用程式
留言
張貼留言