Reputation: 1273
Hangfire.io supports making a CRON-like scheduling of recurring jobs. But how do I specify, that a specific job should be run once, at a specific date/time, e.g. that a job should be run June 4th 2016, at 16:22 - and only at that specific point in time?
A similar way to ask the same question could be: how large a subset of the CRON expression described here, is supported by Hangfire? (The described CRON expression supports a "Year"-field which could be used).
Also, do you think Hangfire is the best choice to schedule one-off batch jobs in the first place, provided that I use Hangfire for job processing?
Upvotes: 4
Views: 15669
Reputation: 37
In one of my application we schedule a job for only once run in a particular date time. Look into below code
public string Schedule(Expression<Action> methodToCall, DateTimeOffset enqueueAt)
{
return BackgroundJob.Schedule(methodToCall, enqueueAt);
}
Where enqueueAt is the date time when you want to run the job.
Upvotes: 1
Reputation: 37
You can use BackgroundJob.Schedule(Expression> methodCall, DateTimeOffsetdt) method.
BackgroundJob.Schedule(methodCall, enqueueAt);
Upvotes: 3
Reputation: 1
Cron expression with Year is not supported by Hangfire.
To run a job at specific point in time, use following schedule
method overload from BackgroundJob
class.
public static string Schedule([InstantHandle] Expression<Action> methodCall, DateTimeOffset enqueueAt);
BackgroundJob.Schedule(() => Console.Write("test"), new DateTime(2016, 6, 4, 16, 22, 0));
Upvotes: 0