public IActionResult AddRecurringObjectJob() { ObjectParam objectParam = new ObjectParam(); RecurringJob.AddOrUpdate <ObjectJob>("ObjectJobID", job => job.Run((PerformContext)null, objectParam), objectParam.Cron); return(Content("AddRecurringObjectJob")); }
public void Run(PerformContext context, ObjectParam param) { Console.WriteLine("***********************************"); Console.WriteLine($"{nameof(param)}: {Newtonsoft.Json.JsonConvert.SerializeObject(param)}"); CronExpression cronExpression = CronExpression.Parse(param.Cron, CronFormat.Standard); DateTimeOffset nowTime = DateTimeOffset.Now; DateTimeOffset?nextTime = cronExpression.GetNextOccurrence(nowTime, TimeZoneInfo.Local); Console.WriteLine($"{nameof(nowTime)}: {nowTime}; {nameof(nextTime)}:{nextTime}"); DateTimeOffset?next2Time = cronExpression.GetNextOccurrence(nextTime.Value, TimeZoneInfo.Local); Console.WriteLine($"{nameof(nowTime)}: {nowTime}; {nameof(nextTime)}:{nextTime}; {nameof(next2Time)}:{next2Time}"); TimeSpan?cycleInterval = next2Time?.DateTime - nextTime?.DateTime; DateTime?currentCycleTime = nextTime?.DateTime - cycleInterval; Console.WriteLine($"{nameof(cycleInterval)}: {cycleInterval}; {nameof(currentCycleTime)}:{currentCycleTime}"); }