Schedule Second Job 10 Minutes After The First Finished

I am trying to schedule 2 background jobs, in which the second is contingent on the first one, and needs to run 10 minutes after that. How can I do that with a regular BackgroundJob.Enqueue, or as a recurring job. please help

BackgroundJob.Schedule() allows to specify a delay before executing a job.

You can use ContinueWith for the depency you are referring to:

        var job = BackgroundJob.Enqueue(() => Console.WriteLine("first"));
        var secondJob = BackgroundJob.ContinueWith(job, ()=> Console.WriteLine("second"));

Regarding having a 10 minute wait you could add a 10 minute thread.sleep at the beginning of your second task for the easiest solution.

A better setup would be the have the second job actually schedule a third job 10 minutes later so you aren’t using a worker to sleep for 10 minutes when Hangfire has scheduling built in:

//Class with second task and helper method
public class Example
{
    public Example()
    {

    }

    public void Run()
    {
        // Your second task here
        // Doesn't have to be in same class but shown here for simplicity.
    }

    public void ScheduleRun(DateTimeOffset enqueueAt)
    {
        // Helper task for scheduling in advance.
        BackgroundJob.Schedule<Example>(x => x.Run(), enqueueAt);
    }
}

You would then run your job like:

//Code to run:
var job = BackgroundJob.Enqueue(() => Console.WriteLine("first"));
var helperJob = BackgroundJob.ContinueWith<Example>(job, x => x.ScheduleRun(DateTimeOffset.UtcNow.AddMinutes(10)));

Huge thanks for your answer. I will try it and report back