I am coding a MVC 5 internet application and am using HangFire
for recurring tasks.
If I have a Monthly recurring task, how can I get the value of the next execution time?
Here is my code for the recurring task:
RecurringJob.AddOrUpdate("AccountMonthlyActionExtendPaymentSubscription", () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly);
I can retrieve the job data as follows:
using (var connection = JobStorage.Current.GetConnection())
{
var recurringJob = connection.GetJobData("AccountMonthlyActionExtendPaymentSubscription");
}
However, I am not sure as to what to do next.
Is it possible to get the next execution time of a recurring task?
Thanks in advance.
You're close. I'm not sure if there is a better or otherwise more direct way to get these details, but the way the Hangfire Dashboard does it is to use an extension method (add
using Hangfire.Storage;
to your imports) calledGetRecurringJobs()
:There are two catches:
NextExecution
time is not available yet (it will be null). I believe the server, once one connects, periodically checks for recurring tasks that need to be scheduled and does so; they do not appear to be immediately scheduled upon creation usingRecurringJob.AddOrUpdate(...)
or other such similar methods. If you need to get thatNextExecution
value immediately after creation, I'm not sure what you can do. It will eventually be populated, though.