private async Task <Result <IEnumerable <FileContentResult> > > GetCoverSampleResult(InputData inputData) { try { var method = _groupingManager.GetGroupingMethods().FirstOrDefault(x => x.MethodName.Equals(inputData.MethodName)); if (method is null) { return(new Result <IEnumerable <FileContentResult> >(NieOdnalezionoPodanejMetodyGrupujacej)); } Thread.CurrentThread.IsBackground = true; _thread = Thread.CurrentThread; var progressBarModel = new ProgressBarModel(); var step = inputData.Step.HasValue ? Convert.ToDouble(inputData.Step) : 0; var source = new CancellationTokenSource(); var token = source.Token; var waitRun = Task.Run(() => { while (!token.IsCancellationRequested) { } token.ThrowIfCancellationRequested(); }, token); var result = await _coverMatrixManager.GetMatrix(inputData.File, inputData.Low, inputData.High, method, inputData.ParamInput, step, progressBarModel, waitRun); var dataTxt = DateTime.Now.ToFileTimeUtc() + "DataMatrixTxt.txt"; var testTxt = DateTime.Now.ToFileTimeUtc() + "TestTxt.txt"; var dataMatrixStream = _txtExportert.GetTxtStream(result.Value.CoverResult.DataMatrix.DataTable); var testMatrixStream = _txtExportert.GetTxtStream(result.Value.CoverResult.TestMatrix.DataTable); var excelName = $"{result.Value.FileName.Replace(" ", "").Replace(".", "").Replace('-', '_').ToUpper()}_SLOW_{result.Value.SLOW}_SHIGH_{result.Value.SHIGH}_STEP_{result.Value.STEP}_METHOD_{result.Value.SelecteMethod.Replace(' ', '_').ToUpper().Replace('Ó', 'O').Replace('Ś', 'S').Replace('Ć', 'C')}_PARAM_{result.Value.SelecteMethodParam}_GRADE_{result.Value.CoverResult.Grade}.xlsx"; var excelStream = _excelWriter.ExportToStream( result.Value, result.Value.CoverResult.DataMatrix.DataTable, result.Value.CoverResult.TestMatrix.DataTable); if (excelStream.HasErrors()) { return(new Result <IEnumerable <FileContentResult> >(excelStream.Error)); } progressBarModel.Progress = 100; var array = new[] { File(testMatrixStream, "application/txt", testTxt), File(dataMatrixStream, "application/txt", dataTxt), File(excelStream.Value, "application/xlsx", excelName) }; return(new Result <IEnumerable <FileContentResult> >(array)); } catch (ThreadAbortException e) { return(new Result <IEnumerable <FileContentResult> >(e.Message)); } catch (OperationCanceledException e) { return(new Result <IEnumerable <FileContentResult> >(e.Message)); } catch (Exception e) { return(new Result <IEnumerable <FileContentResult> >(e.Message)); } finally { GC.Collect(); GC.WaitForPendingFinalizers(); } }