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

留言

這個網誌中的熱門文章

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

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

「綠界(Ecpay)」金流介接教學

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

如何取得 FaceBook 的「應用程式編號」、「應用程式密鑰」。

使用「Line-Notify」發送 line 訊息

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

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

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

開源的前端打包工具「Webpack」