需求是根據配置項動態修改Quartz任務,找了很多資料都是Java的(例如https://blog.csdn.net/u010377605/article/details/77801896),和.net方法欄位都不一樣
目前我的代碼大概是這樣(參照了https://blog.csdn.net/qq_18145031/article/details/81382280)
CronTriggerImpl trigger = new CronTriggerImpl(triggerName, triggerGroupName);
JobDetailImpl jobDetail = new JobDetailImpl(jobDetailName, jobDetailGroupName, type);
//ITrigger trigger = (ITrigger)sched.GetTrigger(new TriggerKey(triggerName, triggerGroupName));
//IJobDetail jobDetail = (IJobDetail)sched.GetJobDetail(new JobKey(jobDetailName, jobDetailGroupName));
if (trigger != null)
{
CronTriggerImpl ct = (CronTriggerImpl)trigger;
// 移除當前行程的Job
bool flag= sched.DeleteJob(jobDetail.Key);
// 修改Trigger
ct.CronExpressionString = time;
Console.WriteLine("CronTrigger getName " + ct.JobName);
// 重新調度jobDetail
sched.ScheduleJob(jobDetail, ct);
}
運行結果是新啟動了一個同名任務,而且周期也不是傳入的Cron運算式那樣,斷點看了下移除任務回傳的flag是false,應該是構造trigger 和jobDetail 沒構造對,這是新增的寫法,按需求應該是獲取現有,但是找了很久也看了原文還是沒找到,求助!(https://quartznet.sourceforge.io/apidoc/3.0/html/)
uj5u.com熱心網友回復:
首先實體屬性主要欄位:
properties["quartz.scheduler.instanceId"] = "此處可以給mac地址保證唯一" ;
properties["quartz.scheduler.instanceName"] = "此處可以給mac地址保證唯一" ;
一般重新構造的方法是:
1、IScheduler 做shutDown處理
2、新corn
3、然后重新 Start()
關于cron運算式:
在線生成地址: http://www.bejson.com/othertools/cron/
更多詳情見官網:
https://www.quartz-scheduler.net/documentation/index.html
uj5u.com熱心網友回復:
頂一下,不要沉uj5u.com熱心網友回復:
我問一下解決沒都給我刪啊,管理員你想啥呢?樓主解決了沒,能否分享一下,網上找了好久沒找到方案.
我用的還是依賴注入,資料更少了
打算修改完xml配置規則后重啟應該能生效
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/38149.html
標籤:C#
上一篇:c#上位機串口收發問題
