public override Task RunAsync() { var awaitableTask = Task.Run(() => { Logger.LogInformation($"Running '{AwaitableTaskName}' during '{AwaitableTaskDurationInSeconds}' sec"); return(Task.Delay(TimeSpan.FromSeconds(AwaitableTaskDurationInSeconds))); }).ContinueWith(previousTask => TaskHelper.OnTerminatedTask(previousTask, AwaitableTaskName)); var fireAndForgetTask = Task.Run(async() => { Logger.LogInformation($"Running '{FireAndForgetTaskName}' during '{FireAndForgetTaskDurationInSeconds}' sec"); await Task.Delay(TimeSpan.FromSeconds(FireAndForgetTaskDurationInSeconds)); throw TaskException.TaskHasFailed(FireAndForgetTaskName); }).ContinueWith(previousTask => TaskHelper.OnTerminatedTask(previousTask, FireAndForgetTaskName)); TaskHelper.FireAndForgetTask(fireAndForgetTask, FireAndForgetTaskName); return(awaitableTask); }