示例#1
0
 private async Task <Result <IEnumerable <FileContentResult> > > GetCoverResult(CoverInputData data)
 {
     return(await await
            Task.Factory.StartNew(async() =>
     {
         try
         {
             return await GetCoverSampleResult(data);
         }
         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
         {
             await Task.Run(() =>
             {
                 GC.Collect();
                 GC.WaitForPendingFinalizers();
                 GC.WaitForFullGCApproach();
                 GC.WaitForFullGCComplete();
             });
         }
     }, data.Token,
                                  TaskCreationOptions.RunContinuationsAsynchronously, TaskScheduler.Default));
 }
示例#2
0
        public async Task <Result <IEnumerable <FileContentResult> > > GetCoverSampleResult(CoverInputData data)
        {
            var method = _groupingManager.Value.GetGroupingMethods().FirstOrDefault(x => x.MethodName.Equals(data.MethodName));

            if (method is null)
            {
                return(new Result <IEnumerable <FileContentResult> >(NieOdnalezionoPodanejMetodyGrupujacej));
            }

            var progressBarModel = new ProgressBarModel();

            var step = string.IsNullOrEmpty(data.Step) ? 0 : Convert.ToDouble(data.Step);

            var waitRun = Task.Run(() =>
            {
                while (!data.Token.IsCancellationRequested)
                {
                }

                data.Token.ThrowIfCancellationRequested();
            }, data.Token);

            var result = await
                         _coverMatrixManager.Value.GetMatrix(data.InputData, data.DataLow, data.DataHigh, method,
                                                             data.GroupParameter, step, progressBarModel, waitRun);

            if (data.Token.IsCancellationRequested)
            {
                data.Token.ThrowIfCancellationRequested();
            }
            var dataTxt          = $"{DateTime.Now.ToFileTimeUtc()}DataMatrixTxt.txt";
            var testTxt          = $"{DateTime.Now.ToFileTimeUtc()}TestTxt.txt";
            var dataMatrixStream = _txtExporter.Value.GetTxtStream(result.Value.CoverResult.DataMatrix.DataTable);
            var testMatrixStream = _txtExporter.Value.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.Value.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[] {
                new FileContentResult(testMatrixStream, "application/txt")
                {
                    FileDownloadName = testTxt
                },
                new FileContentResult(dataMatrixStream, "application/txt")
                {
                    FileDownloadName = dataTxt
                },
                new FileContentResult(excelStream.Value, "application/xlsx")
                {
                    FileDownloadName = excelName
                }
            };

            return(new Result <IEnumerable <FileContentResult> >(array));
        }