日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

.netCore 使用 Quartz 实例

發布時間:2025/3/8 编程问答 15 如意码农
生活随笔 收集整理的這篇文章主要介紹了 .netCore 使用 Quartz 实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、參考源文鏈接

1、https://www.likecs.com/show-897836.html

2、https://blog.csdn.net/weixin_43614067/article/details/115373776

二、Quartz基本使用

public class Job1 : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("開始定時任務1");
return Task.CompletedTask;
}
} public class Job2 : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("開始定時任務2");
return Task.CompletedTask;
}
}
     /// <summary>
/// 定時任務執行實例1
/// </summary>
public static void Test1()
{
var _scheduler = new StdSchedulerFactory().GetScheduler().Result;
var trigger1 = TriggerBuilder.Create()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever())//每10秒執行一次
.Build();
var trigger2 = TriggerBuilder.Create()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(5).RepeatForever())//每10秒執行一次
.Build();
var jobDetail = JobBuilder.Create<Job1>()
.WithIdentity("Myjob1", "group")//我們給這個作業取了個“Myjob”的名字,并取了個組名為“group”
.Build();
var jobDetai2 = JobBuilder.Create<Job2>()
.WithIdentity("Myjob2", "group")//我們給這個作業取了個“Myjob”的名字,并取了個組名為“group”
.Build();
_scheduler.ScheduleJob(jobDetail, trigger1).Wait();
_scheduler.ScheduleJob(jobDetai2, trigger2).Wait();
_scheduler.Start().Wait();
}

二、暫停和恢復某個任務

public class StartJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
for (int i = 0; i < 3; i++)
{
try
{
Thread.Sleep(1000);
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
}
Console.WriteLine(("hello~~~~~~~~~~~~~~~~~~" + i + DateTime.Now.ToString()));
} return Task.CompletedTask;
} }
 public class PauseJob : IJob

    {
public Task Execute(IJobExecutionContext context)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = null;
try
{
sched = sf.GetScheduler().Result;
Console.WriteLine("對象sf:" + sf);
Console.WriteLine("對象sched:" + sched);
}
catch (SchedulerException e)
{
Console.WriteLine(e.StackTrace);
}
CommonUtil.PauseJob(sched, "startJob", "group1"); return Task.CompletedTask;
}
}
 public class ResumeJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = null;
try
{
sched = sf.GetScheduler().Result;
Console.WriteLine("對象sf:" + sf);
Console.WriteLine("對象sched:" + sched);
}
catch (SchedulerException e)
{
Console.WriteLine(e.StackTrace);
}
CommonUtil.ResumeJob(sched, "startJob", "group1"); return Task.CompletedTask;
} }
  public class CommonUtil
{
/// <summary>
/// 暫停一個job,暫停后,任務若未執行完,會執行完畢為止。
/// </summary>
/// <param name="scheduler"></param>
/// <param name="jobName"></param>
/// <param name="jobGroupName"></param>
public static void PauseJob(IScheduler scheduler, string jobName, string jobGroupName)
{
try
{
scheduler.PauseJob(new JobKey(jobName, jobGroupName));
Console.WriteLine(string.Format("定時任務%s暫停成功!", jobName));
}
catch (SchedulerException e)
{
Console.WriteLine((string.Format("定時任務%s暫停異常!", jobName)));
}
} /// <summary>
/// 恢復一個job 恢復定時器時立刻先執行一次定時器的任務 然后再按計劃執行
/// </summary>
/// <param name="scheduler"></param>
/// <param name="jobName"></param>
/// <param name="jobGroupName"></param>
public static void ResumeJob(IScheduler scheduler, String jobName, String jobGroupName)
{
try
{
scheduler.ResumeJob(new JobKey(jobName, jobGroupName));
Console.WriteLine((string.Format("定時任務%s恢復成功!", jobName)));
}
catch (SchedulerException e)
{
Console.WriteLine((string.Format("定時任務%s恢復異常!", jobName)));
}
} }
 public static void Test()
{ ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler sched = sf.GetScheduler().Result; //創建相關的job信息
IJobDetail startJob = JobBuilder.Create<StartJob>()
.WithIdentity("startJob", "group1")
.Build(); IJobDetail pauseJob = JobBuilder.Create<PauseJob>()
.WithIdentity("pauseJob", "group2")
.Build(); IJobDetail resumeJob = JobBuilder.Create<ResumeJob>()
.WithIdentity("resumeJob", "group3")
.Build(); //創建觸發器的名稱
//每2s執行startJob任務
ITrigger startTrigger = TriggerBuilder.Create()
.WithIdentity("trigger1", "group1")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/2 * * * * ?")).Build();
//每10s執行暫停任務,去暫停startJob任務
ITrigger pauseTrigger = TriggerBuilder.Create()
.WithIdentity("trigger2", "group2")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/10 * * * * ?")).Build();
//每15s執行恢復任務,去恢復startJob任務
ITrigger resumeTrigger = TriggerBuilder.Create()
.WithIdentity("trigger3", "group3")
.WithSchedule(CronScheduleBuilder.CronSchedule("0/15 * * * * ?")).Build(); sched.ScheduleJob(startJob, startTrigger);
sched.ScheduleJob(pauseJob, pauseTrigger);
sched.ScheduleJob(resumeJob, resumeTrigger); sched.Start();
}

總結

以上是生活随笔為你收集整理的.netCore 使用 Quartz 实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。