? Acabo de empezar a usar el TPL, y quiero hacer varias llamadas a servicios web en paralelo. Por lo que puedo deducir, veo dos maneras de hacer esto.¿Cuál sería una mejor forma de usar la biblioteca paralela de tareas
De cualquier Parallel.ForEach
:
List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
Parallel.ForEach(list, member =>
{
var result = Proxy.Invoke(member);
//...
//Do stuff with the result
//...
});
O Task<T>
:
List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
ForEach(var member in list)
{
Task<MemberResult>.Factory.StartNew(() => proxy.Invoke(member));
}
//Wait for all tasks to finish.
//Process the result objects.
sin tener en cuenta si la sintaxis es correcta o no, estas son las que brindaban?
¿Producirán el mismo resultado? Si no, ¿por qué? y cual es preferible?
Gracias por la respuesta. Terminé usando Parallel.ForEach y vemos una mejora de alrededor del 25% en el tiempo de respuesta en nuestra producción: 16 máquinas centrales.Supongo que la mayor parte de la ganancia está en el procesamiento paralelo de datos, y no en las llamadas paralelas a los servicios web. –