xer*_*him 4 .net c# quartz-scheduler quartz.net
我无法理解如何使用 Quartz 2.3.2 版获取作业的详细信息。
到目前为止,我们使用 Quartz v1.0.x 进行作业,我必须将其升级到最新版本。
这是我们过去获取作业详细信息的方式:
JobDetail job = scheduler.GetJobDetail(task.Name, groupName);
Run Code Online (Sandbox Code Playgroud)
在 2.3.2 版本中,该方法GetJobDetail()不再具有接受 2 个参数的构造函数......相反,它接受一个JobKey参数。
不幸的是,我找不到获得单个 JobKey 的方法。我尝试的是以下内容:
string groupName = !string.IsNullOrEmpty(task.GroupNameExtension) ? task.GroupNameExtension : task.GroupName;
var jobkeys = quartzScheduler.GetJobKeys(GroupMatcher<JobKey>.GroupContains(groupName));
var jobkey = jobkeys.Single(x => x.Name == task.Name);
var jobDetail = quartzScheduler.GetJobDetail(jobkey);
Run Code Online (Sandbox Code Playgroud)
var jobkey = jobkey.Single(...)吗?提前致谢
您可以创建一个新的作业键(这只是作业名称和组名称的花哨存储)
new JobKey("jobName", "jobGroupName");
Run Code Online (Sandbox Code Playgroud)
只要您的工作名称和工作组名称与您创建工作的名称相同,您就可以获取工作详细信息。
var jobDetail = quartzScheduler.GetJobDetail(new JobKey("jobName", "jobGroupName"));
Run Code Online (Sandbox Code Playgroud)
就我个人而言,我在我的工作类中实现了一个静态方法来集中创建工作键,所以我没有到处都有很多文字:
public static JobKey GetJobKey(EntityServer server)
{
return new JobKey("AutoRestart" + server.Id, "AutoRestart");
}
Run Code Online (Sandbox Code Playgroud)
请注意,对于 triggerKey 也是如此
public static TriggerKey GetTriggerKey(EntityServer server)
{
return new TriggerKey("AutoRestart" + server.Id, "AutoRestart");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9652 次 |
| 最近记录: |