/// <summary> /// Checks the remove completed process. /// </summary> /// <param name="generationDao">The generation DAO.</param> /// <param name="process">The process.</param> private void CheckRemoveCompletedProcess(GenerationDao generationDao, IHostedProcess process) { ReportGenerationQueue processingReport = generationDao.Find<ReportGenerationQueue>(queue => queue.ReportGenerationQueueId == process.ReportGenerationQueueId); if (processingReport != null) { // If the process is completed, cancelled or failed, remove it from the queue if (processingReport.ReportGenerationStatus.In(ReportStatus.Completed, ReportStatus.Cancelled, ReportStatus.Failed)) { if (processingReport.ReportGenerationStatus == ReportStatus.Cancelled) { this.TerminateProcess(process); } this._reportGeneratorEngineList.Remove(process); } else { if (process.HasExited) { this._reportGeneratorEngineList.Remove(process); } } } }