1.首先從NuGet中安裝Quartz,安裝最新版本就OK 2.新建一個Job類實現Quart中的IJob介面用於執行業務邏輯,代碼如下: 3.新建一個任務執行類用於啟動任務,代碼如下: 對於標黃色部分做簡單說明 CheckUpdateJob:毫無疑問就是你的Job類。從源碼裡面看必須是需要實現IJ ...
1.首先從NuGet中安裝Quartz,安裝最新版本就OK
2.新建一個Job類實現Quart中的IJob介面用於執行業務邏輯,代碼如下:
class CheckUpdateJob : IJob
{
public async Task Execute(IJobExecutionContext context)
{
//在此處實現業務
}
}
3.新建一個任務執行類用於啟動任務,代碼如下:
class JobController
{
//調度器
IScheduler scheduler;
//調度器工廠
ISchedulerFactory factory;
//執行時間間隔
private int checkInternal = int.Parse(ConfigurationManager.AppSettings["CheckInternal"]);
public async Task Start()
{
factory = new StdSchedulerFactory();
scheduler = await factory.GetScheduler();//創建一個任務
IJobDetail jobCheck = JobBuilder.Create<CheckUpdateJob>().WithIdentity("check", "other").Build();
//創建一個觸發器
ITrigger checkTrigger = TriggerBuilder.Create()
.WithIdentity("check", "other")
.WithSchedule(SimpleScheduleBuilder.Create().WithIntervalInSeconds(checkInternal).RepeatForever())
.StartNow()
.Build();
//把任務和觸發器加入調度器中
await scheduler.ScheduleJob(jobCheck, checkTrigger);
//開始執行
await scheduler.Start();
}
}
對於標黃色部分做簡單說明
CheckUpdateJob:毫無疑問就是你的Job類。從源碼裡面看必須是需要實現IJob介面的類,源碼如圖:
check:自定義的Job別名,當有很多的Job需要執行的時候,可以使用別名區分。
other:自定義分組別名,當你有多Job的時候可以把Job進行分組,例如:訂單,數據清理等;當你需要對Job管理的時候便會派上用場。
ITrigger 中的check,other道理同上
checkInternal:這個參數為輪詢間隔秒數,這裡我只做個簡單間隔秒數輪詢方式執行Job,其內置了豐富的方式。比如:每月的第幾號,每周的星期幾,上午或者下午時間點等
其他更多的應用可自行度娘或者看官方文檔吧!
4.最後調用Start()即可,代碼如下:
static void Main(string[] args)
{
JobController controller = new JobController();
var t = controller.Start();
t.Wait();
Console.Read();
}