public IActionResult RunNow(string scheduledTaskSystemName) { if (scheduledTaskSystemName.IsNullEmptyOrWhiteSpace()) { return(BadRequest()); } var scheduledTask = _scheduledTaskService.FirstOrDefault(x => x.SystemName == scheduledTaskSystemName); var iTask = DependencyResolver.Resolve <ITask>(scheduledTaskSystemName); try { ScheduledTaskHelper.RunScheduledTask(scheduledTask, iTask, _scheduledTaskService, _logger, false); } catch (Exception) { return(R.Fail.With("error", T("An error occurred while running the task. Please check the log for details")).Result); } return(R.Success.Result); }
public void Start() { //only start tasks if we have db installed if (!DatabaseManager.IsDatabaseInstalled()) { return; } var availableTasks = DependencyResolver.ResolveMany <ITask>().ToList(); var scheduledTasks = _scheduledTaskService.Get(x => true).ToList(); //first sync available tasks and database tasks UpdateTasksInDatabase(availableTasks, scheduledTasks); if (!scheduledTasks.Any(x => x.Enabled)) { return; } var registry = new Registry(); //add each enabled task to the scheduler foreach (var sTask in scheduledTasks.Where(x => x.Enabled)) { var task = availableTasks.FirstOrDefault(x => x.SystemName == sTask.SystemName); if (task == null) { continue; } if (sTask.Seconds < 10) { sTask.Seconds = 10; } //schedule the task registry.Schedule(() => { ScheduledTaskHelper.RunScheduledTask(sTask, task, _scheduledTaskService, _logger); }).ToRunEvery(sTask.Seconds).Seconds(); } //initialize the jobmanager JobManager.Initialize(registry); }