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 應用程式

七、參考

  1. quartz

留言

這個網誌中的熱門文章

使用「LINE Messaging API」發送 line 訊息

使用「Visual Studio 2019」建置 Windows 服務

如何傳送訊息至「Teams」的 Channel

使用「SqlBulkCopy」進行大量資料寫入

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

「Katalon Recorder」簡化測試腳本撰寫的工具

使用「NLog」來記錄應用程式的大小事吧

asp.net 下的 JSON 套件最佳利器「Newtonsoft.Json」