use async tasks requests
This commit is contained in:
parent
6191f01da3
commit
ebc973093e
@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using ELT.Client.Models.Insurance;
|
using ELT.Client.Models.Insurance;
|
||||||
using ELT.Client.Models.Insurance.Request;
|
using ELT.Client.Models.Insurance.Request;
|
||||||
using ELTKasko;
|
using ELTKasko;
|
||||||
@ -9,6 +11,7 @@ namespace ELT.Client.Managers.Insurance
|
|||||||
public class KaskoManager : InsuranceManager<CalculateKaskoRequest, KASKOCalculationResult>
|
public class KaskoManager : InsuranceManager<CalculateKaskoRequest, KASKOCalculationResult>
|
||||||
{
|
{
|
||||||
private readonly EltSoap _eltKaskoSoap;
|
private readonly EltSoap _eltKaskoSoap;
|
||||||
|
|
||||||
public KaskoManager()
|
public KaskoManager()
|
||||||
{
|
{
|
||||||
_eltKaskoSoap = new EltSoapClient();
|
_eltKaskoSoap = new EltSoapClient();
|
||||||
@ -23,9 +26,11 @@ namespace ELT.Client.Managers.Insurance
|
|||||||
kaskoParams.Mark = preRequestData.Brand;
|
kaskoParams.Mark = preRequestData.Brand;
|
||||||
kaskoParams.Model = preRequestData.Model;
|
kaskoParams.Model = preRequestData.Model;
|
||||||
|
|
||||||
|
|
||||||
var result = new Dictionary<string, KASKOCalculationResult>();
|
var result = new Dictionary<string, KASKOCalculationResult>();
|
||||||
foreach (var companyId in calculateKaskoRequest.CompanyIds)
|
|
||||||
try
|
var tasks = calculateKaskoRequest.CompanyIds.Distinct().Select(companyId =>
|
||||||
|
new Task(() =>
|
||||||
{
|
{
|
||||||
var res = _eltKaskoSoap.PreliminaryKASKOCalculation(
|
var res = _eltKaskoSoap.PreliminaryKASKOCalculation(
|
||||||
new ELTKasko.AuthInfo
|
new ELTKasko.AuthInfo
|
||||||
@ -46,11 +51,11 @@ namespace ELT.Client.Managers.Insurance
|
|||||||
, kaskoParams);
|
, kaskoParams);
|
||||||
if (string.IsNullOrEmpty(res.Error))
|
if (string.IsNullOrEmpty(res.Error))
|
||||||
result.Add(companyId, res);
|
result.Add(companyId, res);
|
||||||
}
|
}));
|
||||||
catch (Exception)
|
|
||||||
{
|
var tasksArray = tasks as Task[] ?? tasks.ToArray();
|
||||||
// ignored
|
Parallel.ForEach(tasksArray, (t) => t.Start());
|
||||||
}
|
Task.WaitAll(tasksArray.ToArray());
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user