public async Task CheckLongRunningTasks(LITETask liteTask, KeyValuePair <string, SemaphoreSlim> sem, List <LiteTaskInfo> tempTasks) { foreach (var task in tempTasks.FindAll(e => e.type == sem.Key)) { await CheckLongRunningTaskItem(liteTask, task); } }
private async Task CheckLongRunningTaskItem(LITETask liteTask, LiteTaskInfo task) { Throw.IfNull(liteTask); Throw.IfNull(task); if (task.task == null) { return; } TaskStatus status = task.task.Status; switch (status) { case TaskStatus.Canceled: case TaskStatus.Faulted: case TaskStatus.RanToCompletion: { task.MarkTaskComplete(); //this is in case taskCompletion didn't fire await liteTask.RemoveTask(task); break; } } _logger.Log(LogLevel.Information, $" ->task: {task.taskID} {((task.task.Status.Equals(TaskStatus.WaitingForActivation)) ? "Running" : task.task.Status.ToString())} elapsed: {((task.completionDate == null) ? (DateTime.Now - task.bornOnDate) : (task.completionDate - task.bornOnDate))} {task.reference} {task.description}"); }
public async Task ProcessTempTasks(LITETask lITETask, List <LiteTaskInfo> tempTasks) { foreach (var task in tempTasks) { await ProcessTempTaskItem(lITETask, task); } }
private async Task ProcessTempTaskItem(LITETask liteTask, LiteTaskInfo task) { if (task.task == null) { return; } //Report status on short running tasks if (task.isLongRunning) //long running tasks that manage mini-tasks { return; } switch (task.task.Status) { case TaskStatus.WaitingForActivation: case TaskStatus.Created: if (DateTime.Now.Second % 10 == 0) { _logger.Log(LogLevel.Information, $"task: {task.taskID} {((task.task.Status.Equals(TaskStatus.WaitingForActivation)) ? "Running" : task.task.Status.ToString())} elapsed: {((task.completionDate == null) ? (DateTime.Now - task.bornOnDate) : (task.completionDate - task.bornOnDate))} {task.reference} {task.description}"); } break; case TaskStatus.Running: case TaskStatus.WaitingForChildrenToComplete: case TaskStatus.WaitingToRun: if (DateTime.Now.Second % 10 == 0) { _logger.Log(LogLevel.Information, $"task: {task.taskID} {((task.task.Status.Equals(TaskStatus.WaitingForActivation)) ? "Running" : task.task.Status.ToString())} elapsed: {((task.completionDate == null) ? (DateTime.Now - task.bornOnDate) : (task.completionDate - task.bornOnDate))} {task.reference} {task.description}"); } break; case TaskStatus.Canceled: case TaskStatus.Faulted: case TaskStatus.RanToCompletion: task.MarkTaskComplete(); //this is in case taskCompletion didn't fire await liteTask.RemoveTask(task); _logger.Log(LogLevel.Information, $"task: {task.taskID} {((task.task.Status.Equals(TaskStatus.WaitingForActivation)) ? "Running" : task.task.Status.ToString())} elapsed: {((task.completionDate == null) ? (DateTime.Now - task.bornOnDate) : (task.completionDate - task.bornOnDate))} {task.reference} {task.description}"); break; } var profile = _profileStorage.Current; if (DateTime.Now - task.bornOnDate > profile.maxTaskDuration) { _logger.Log(LogLevel.Information, $"task: {task.taskID} {((task.task.Status.Equals(TaskStatus.WaitingForActivation)) ? "Running" : task.task.Status.ToString())} elapsed: {((task.completionDate == null) ? (DateTime.Now - task.bornOnDate) : (task.completionDate - task.bornOnDate))} {task.reference} {task.description} RUNNING LONGER THAN profile.maxTaskDuration."); task.ctsPerTask.Cancel(); } }