我正在使用Quartz.NET。 https://www.quartz-scheduler.net/
我可以通过myTask调用其他服务吗?我需要我的上下文,因为我需要更新我的数据库。我不知道如何捕捉上下文。
我发现有关Quartz库的所有示例,它们非常简单,就像在控制台中打印一样
public class MyTask : IJob
{
private IRegion _region;
public Task Execute(IJobExecutionContext context)
{
switch (context.JobDetail.Key.ToString())
{
case "app.chargeMDM":
_region.CalculateData(0);
Console.WriteLine(string.Format("[{0}]: Hora de comer!", DateTime.Now));
break;
case "app.5min":
Console.WriteLine(string.Format("[{0}]: La app esta UP!.", DateTime.Now));
break;
}
return null;
}
}
例如,这是我的服务
public class RegionService : IRegion
{
PanelANRContext _context;
public RegionService(PanelANRContext context)
{
_context = context;
}
...
}
答案 0 :(得分:0)
我需要我的上下文,因为我需要更新我的数据库。和我 不知道如何捕捉背景。
您可以将对象传递到IJobExecutionContext context
。然后使用JobDataMap
检索它们。
例如:
使用job
JobData
JobDetail job = newJob(DumbJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.usingJobData("jobSays", "Hello World!")
.usingJobData("myFloatValue", 3.141f)
.build();
检索:
public class DumbJob implements Job {
public DumbJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException
{
JobKey key = context.getJobDetail().getKey();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String jobSays = dataMap.getString("jobSays");
float myFloatValue = dataMap.getFloat("myFloatValue");
System.err.println("Instance " + key + " of DumbJob says: " + jobSays + ", and val is: " + myFloatValue);
}
}
查看此Tutorial - Lesson 3: More About Jobs and Job Details了解更多详情。