private async Task ExecuteTasksThenUpdateMarkSession( IEnumerable <Task> tasks, MarkSessionModel markSessionModel ) { Exception exception = null; try { await TaskUtil.ExecuteTasksInParallel(tasks); } catch (Exception e) { exception = e; } finally { await _markSessionRepository.Update(markSessionModel); if (exception != null) { throw exception; } } }
public async Task DeleteDependantResourcesForMarkSession( MarkSessionModel markSessionModel ) { var taskList = new List <Task>(); foreach (var dependantResourceModel in markSessionModel.DependantResources) { switch (dependantResourceModel.ResourceType) { case ResourceTypeEnum.Project: // The project must not be deleted ! break; case ResourceTypeEnum.Metadata: taskList.Add( _fileClient.DeleteResource(dependantResourceModel) ); break; case ResourceTypeEnum.Scenario: taskList.Add( _scenarioClient.DeleteResource(dependantResourceModel) ); break; case ResourceTypeEnum.ResultConfig: taskList.Add( _resultConfigClient.DeleteResource(dependantResourceModel) ); break; case ResourceTypeEnum.SimPlan: taskList.Add( _simPlanClient.DeleteResource(dependantResourceModel, markSessionModel.ProjectId) ); break; case ResourceTypeEnum.SimRun: taskList.Add( _simRunClient.DeleteResource(dependantResourceModel, markSessionModel.ProjectId) ); break; case ResourceTypeEnum.ResultData: taskList.Add( _resultDataClient.DeleteResource(dependantResourceModel) ); break; default: throw new UnknownResourceTypeExcetion( $"{dependantResourceModel.ResourceType} is unknown!" ); } } await TaskUtil.ExecuteTasksInParallel(taskList); }
public async void ExecuteTasksInParallel_FailedTask_ThrowsException() { // Arrange var taskList = new List <Task> { Task.CompletedTask, Task.CompletedTask, Task.FromException(new Exception()) }; Exception exception = null; try { // Act await TaskUtil.ExecuteTasksInParallel(taskList); } catch (Exception e) { exception = e; } // Assert Assert.NotNull(exception); }
public async void ExecuteTasksInParallel_CompletedTasks_NoExceptionThrown() { // Arrange var taskList = new List <Task> { Task.CompletedTask, Task.CompletedTask, Task.CompletedTask }; Exception exception = null; // Act try { await TaskUtil.ExecuteTasksInParallel(taskList); } catch (Exception e) { exception = e; } // Assert Assert.Null(exception); }