use async tasks requests
This commit is contained in:
parent
6191f01da3
commit
ebc973093e
@ -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<CalculateKaskoRequest, KASKOCalculationResult>
|
||||
{
|
||||
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<string, KASKOCalculationResult>();
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user