由于BackgroundJob没有添加/更新,因此我尝试着处理重复工作,然后设置一个背景连续性,在首次生成后将其删除。但这不仅可以删除,还可以使我的定期工作在第一次生成后每秒生成一次。
[HttpGet("{day}/{month}/{hour}/{minute}/{second}/{jobID}")]
public string Get(int day, int month, int hour, int minute, int second, string jobID)
{
RecurringJob.AddOrUpdate(jobID, () => Console.WriteLine("At " + hour + " hour " + minute + " minute " +
second + " second, day "
+ day + " month " + month),
"*/" + second + " " + minute + " " + hour + " " + day + " " + month + " *", TimeZoneInfo.Local);
BackgroundJob.ContinueWith(jobID, () => RecurringJob.RemoveIfExists(jobID));
return "value";
}
显然,周期性工作不能与Backgroundjob.ContinueWith一起使用。如果我想使其像计划作业一样工作并且仍然能够更新内部时间跨度,则需要设置一个函数以将其删除。
[HttpGet("{day}/{month}/{hour}/{minute}/{second}/{jobID}")]
public string Get(int day, int month, int hour, int minute, int second, string jobID)
{
RecurringJob.AddOrUpdate(jobID, () => removeRecurring(jobID),
"*/" + second + " " + minute + " " + hour + " " + day + " " + month + " *", TimeZoneInfo.Local);
return "value";
}
public void removeRecurring(string jobId)
{
Console.WriteLine(DateTime.Now);
RecurringJob.RemoveIfExists(jobId);
}