第一種,無圖形化界面
新建asp.net core webapi項目,使用Nuget搜索安裝Quartz包。
1.新建類,繼承IJob,在實現(xiàn)的方法種書寫需要周期性執(zhí)行的事件。
public class TimerWorker : IJob
{
public async Task Execute(IJobExecutionContext context)
{
//定時任務(wù)
TLog.WriteLog("事件執(zhí)行!");
}
}
2.編寫方法類,定義事件執(zhí)行方式
public class SpecialWork
{
public static async void Work()
{
//調(diào)度器工廠
ISchedulerFactory Work = new StdSchedulerFactory();
//調(diào)度器
IScheduler schedulers_work = await Work.GetScheduler();
await schedulers_work.GetJobGroupNames();
/*-------------計劃任務(wù)代碼實現(xiàn)------------------*/
//創(chuàng)建任務(wù)
IJobDetail job_Work = JobBuilder.Create<TimerWorker>()
.WithIdentity("TimeTriggerddd", "TimeGroupdd")
.Build();
//創(chuàng)建觸發(fā)器 2點一分時被執(zhí)行
//時間字符串的解釋
//定時執(zhí)行
ITrigger trigger9 = TriggerBuilder.Create().WithCronSchedule("0 01 02 * * ?").WithIdentity("TimeTriggerddd", "TimeGroupdd").Build();
//每隔多久執(zhí)行一次 這個是每隔多久執(zhí)行一遍 多少秒
//ITrigger trigger9 = TriggerBuilder.Create().WithIdentity("TimeTriggerddd", "TimeGroupdd").WithSimpleSchedule(t => t.WithIntervalInSeconds(5).RepeatForever()).Build(); //5=5秒
//添加任務(wù)及觸發(fā)器至調(diào)度器中
await schedulers_work.ScheduleJob(job_Work, trigger9);
/*-------------計劃任務(wù)代碼實現(xiàn)------------------*/
//啟動
await schedulers_work.Start();
}
}
注意:定時執(zhí)行時間格式,參考連接:https://www.cnblogs.com/wudequn/p/8506938.html文章來源:http://www.zghlxwxcb.cn/news/detail-644650.html
3.在啟動方法中,進(jìn)行設(shè)置,.net 6中在program.cs的Main方法中(可以在啟動類中進(jìn)行啟動)
SpecialWork.Work();
4.考慮到IIS服務(wù)器的回收機(jī)制,需要設(shè)置一下IIS回收
在IIS中找到這個站點所用的程序池,點擊“高級設(shè)置…” 在打開的列表中更改以下設(shè)置:
回收——固定時間間隔(分鐘) 改為 0
——虛擬/專用內(nèi)存限制(KB) 改為 0
進(jìn)程模型——閑置超時(分鐘) 改為 0
這樣子,一般情況下程序池就不會被自動回收了,后臺一些簡單的計算線程就會正常工作
除圖中標(biāo)識的內(nèi)容之外,閑置超時也要設(shè)為0文章來源地址http://www.zghlxwxcb.cn/news/detail-644650.html
到了這里,關(guān)于asp.net core webapi如何執(zhí)行周期性任務(wù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!