static void ExecuteTask(TaskDefinition taskDefinition) { logger.InfoFormat("Start executing scheduled task {0}", taskDefinition.Name); var sw = new Stopwatch(); sw.Start(); Task.Factory .StartNew(taskDefinition.Task, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default) .ContinueWith(task => { sw.Stop(); if (task.IsFaulted) { task.Exception.Handle(ex => { logger.Error(String.Format("Failed to execute scheduled task {0}", taskDefinition.Name), ex); return true; }); } else { logger.InfoFormat("Scheduled task {0} run for {1}", taskDefinition.Name, sw.Elapsed.ToString()); } }); }
void DeferTask(TaskDefinition taskDefinition) { bus.Defer(taskDefinition.Every, new Messages.ScheduledTask { TaskId = taskDefinition.Id, Name = taskDefinition.Name, Every = taskDefinition.Every }); }
public void Schedule(TaskDefinition taskDefinition) { scheduledTasks[taskDefinition.Id] = taskDefinition; logger.DebugFormat("Task {0}/{1} scheduled with timeSpan {2}", taskDefinition.Name, taskDefinition.Id, taskDefinition.Every); DeferTask(taskDefinition); }