From ebc973093efa576539502583498a4b5375c372c9 Mon Sep 17 00:00:00 2001 From: Chika Date: Sun, 21 Mar 2021 22:56:09 +0300 Subject: [PATCH] use async tasks requests --- ELT.Client/Managers/Insurance/KaskoManager.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ELT.Client/Managers/Insurance/KaskoManager.cs b/ELT.Client/Managers/Insurance/KaskoManager.cs index b779c26..1ebd66b 100644 --- a/ELT.Client/Managers/Insurance/KaskoManager.cs +++ b/ELT.Client/Managers/Insurance/KaskoManager.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using ELT.Client.Models.Insurance; using ELT.Client.Models.Insurance.Request; using ELTKasko; @@ -9,6 +11,7 @@ namespace ELT.Client.Managers.Insurance public class KaskoManager : InsuranceManager { private readonly EltSoap _eltKaskoSoap; + public KaskoManager() { _eltKaskoSoap = new EltSoapClient(); @@ -23,9 +26,11 @@ namespace ELT.Client.Managers.Insurance kaskoParams.Mark = preRequestData.Brand; kaskoParams.Model = preRequestData.Model; + var result = new Dictionary(); - foreach (var companyId in calculateKaskoRequest.CompanyIds) - try + + var tasks = calculateKaskoRequest.CompanyIds.Distinct().Select(companyId => + new Task(() => { var res = _eltKaskoSoap.PreliminaryKASKOCalculation( new ELTKasko.AuthInfo @@ -46,11 +51,11 @@ namespace ELT.Client.Managers.Insurance , kaskoParams); if (string.IsNullOrEmpty(res.Error)) result.Add(companyId, res); - } - catch (Exception) - { - // ignored - } + })); + + var tasksArray = tasks as Task[] ?? tasks.ToArray(); + Parallel.ForEach(tasksArray, (t) => t.Start()); + Task.WaitAll(tasksArray.ToArray()); return result; }