Actualmente tengo una sección de código que necesita realizar aproximadamente 7 llamadas de servicio web a varios proveedores de datos. Cada llamada tarda unos segundos en ejecutarse, por lo que me gustaría ejecutarlas en paralelo para acelerar las cosas.Usando .Net Parallel Extensions (Parallel.Invoke) para múltiples llamadas asincrónicas?
He envuelto mis 7 llamadas en un Parallel.Invoke la que funciona muy bien en el funcionamiento de un par de cosas al mismo tiempo, pero en un servidor central 2, que sólo ejecutará 2 a la vez, uno por núcleo. Como todo lo que hago es esperar a que regresen las llamadas del servicio web, me gustaría que fuera a buscar las 7 y esperar a que regresen.
¿Hay alguna manera de hacer esto? ¿O tal vez mi enfoque es incorrecto? Tal vez necesito crear llamadas asincrónicas a los servicios web? Pero ¿cómo esperar a que todos regresen antes de seguir?
Me dio la impresión de que quería que todos los completen antes de continuar. –
@Steven: Lo que puede hacer a través de Task.WaitAll, pero puede hacer otro trabajo mientras espera, si está disponible, si esa es una opción. Sin embargo, casos como este a menudo funcionan con Task.WaitAny, ya que normalmente puede comenzar parte del trabajo tan pronto como se completen algunas de las tareas; es raro que necesite 7 resultados diferentes para realizar cualquier procesamiento ... –
Está bien, esto funcionará también y con más flexibilidad de lo que sugerí. –