Я пытаюсь составить список рейсов, которые ищут в различных веб-сервисах, и возвращается для необычных рейсов. Я создал TASK и желаю, чтобы кто-то подтвердил и дал мне советы по улучшению.Подтвердить выполнение задания C#
Задача ждет до 30 секунд. Если что-то ocorer на некоторых веб-сервисах я хочу вернуть, даже если он дает ошибку.
Пожалуйста, смотрите код и оценить:
Задача, возвращающие рейсы
public List<datatypes.ResponseAvail> SearchRQWithTask(datatypes.RequestAvail rq)
{
List<datatypes.ResponseAvail> rsLst = new List<datatypes.ResponseAvail>();
try
{
var tasks = new List<Task>();
foreach (var broker in rq.brokers)
{
switch (broker.NomeBroker)
{
case Brokers.Azul:
brokers.Azul az = new brokers.Azul();
tasks.Add(Task.Factory.StartNew(() => rsLst.Add(az.SearchAzul(rq))));
break;
case Brokers.Sabre:
brokers.Sabre sabre = new brokers.Sabre();
tasks.Add(Task.Factory.StartNew(() => rsLst.Add(sabre.SearchSabre(rq))));
break;
case Brokers.TAM:
brokers.TAM tam = new brokers.TAM();
tasks.Add(Task.Factory.StartNew(() => rsLst.Add(tam.SearchTAM(rq))));
break;
default:
break;
}
}
Task.WaitAll(tasks.ToArray(), 10000);
}
catch (Exception ex)
{
rsLst[0].Error = ex;
}
return rsLst;
}
Запрос Свободна
public class RequestAvail
{
public int idClienteRq { get; set; }
public List<BrokersList> brokers { get; set; }
public string origem { get; set; }
public string destino { get; set; }
}
public class BrokersList
{
public int id { get; set; }
public Brokers NomeBroker { get; set; }
}
public enum Brokers
{
Azul = 1,
Sabre = 2,
GOL = 3,
TAM = 4
}
responseAvail
public class ResponseAvail : Exception
{
public int code { get; set; }
public string brokerName { get; set; }
public List<ListVoos> voos { get; set; }
public Exception Error { get; set; }
}
public class ListVoos
{
public int id { get; set; }
public string ori { get; set; }
public string des { get; set; }
public DateTime departure { get; set; }
public DateTime arrival { get; set; }
}
Брокеры, которые я выполняю из веб-сервисов, звонят. Это поддельное возвращение.
class Azul
{
public datatypes.ResponseAvail SearchAzul(datatypes.RequestAvail rq)
{
datatypes.ResponseAvail rs = new datatypes.ResponseAvail();
rs.brokerName = "AZUL";
rs.code = 100;
rs.voos = new List<datatypes.ListVoos>();
rs.voos.Add(new datatypes.ListVoos{
arrival = new DateTime(2013,05,10),
departure = new DateTime(2013,05,10),
id = 1,
ori="SAO",
des="GIG"
});
return rs;
}
}
Saber Брокер
public class Sabre
{
public datatypes.ResponseAvail SearchSabre(datatypes.RequestAvail rq)
{
datatypes.ResponseAvail rs = new datatypes.ResponseAvail();
try
{
rs.brokerName = "Sabre";
rs.code = 5665;
rs.voos = new List<datatypes.ListVoos>();
rs.voos.Add(new datatypes.ListVoos
{
arrival = new DateTime(2013, 05, 10),
departure = new DateTime(2013, 05, 10),
id = 1,
ori = "SAO",
des = "GIG"
});
Thread.Sleep(100);
//
//if (rs.voos[0].ori == "SAO")
//{
// throw new Exception("Erro no source Sabre....");
//}
}
catch (Exception ex)
{
throw ex;
}
return rs;
}
}
Tam Брокер поддельной
public class TAM
{
public datatypes.ResponseAvail SearchTAM(datatypes.RequestAvail rq)
{
datatypes.ResponseAvail rs = new datatypes.ResponseAvail();
rs.brokerName = "TAM";
rs.code = 300;
rs.voos = new List<datatypes.ListVoos>();
rs.voos.Add(new datatypes.ListVoos
{
arrival = new DateTime(2013, 05, 10),
departure = new DateTime(2013, 05, 10),
id = 1,
ori = "SAO",
des = "GIG"
});
return rs;
}
}
Итак, ваш вопрос, пожалуйста, просмотрите этот код для меня? codereview.stackexchange.com работает для этого. – paqogomez
Возможно, вы попытались решить эту проблему самостоятельно. – gleng