Attualmente ho una sezione di codice che deve fare circa 7 chiamate di servizi Web a vari fornitori per i dati. Ogni chiamata richiede diversi secondi per essere eseguita, quindi mi piacerebbe eseguirli in parallelo per velocizzare le cose.Utilizzo di .Net Parallel Extensions (Parallel.Invoke) per più chiamate asincrone?
Ho avvolto le mie 7 chiamate in un Parallel.Invoke che funziona alla grande con un paio di cose allo stesso tempo, ma su un server 2 core, eseguirà solo 2 alla volta, una per core. Dato che tutto quello che sto facendo è aspettare che le chiamate al servizio web tornino, vorrei che andassero a prendere tutte le 7 e aspettiamo che ritornino.
Non c'è un modo per fare questo? O forse il mio approccio è sbagliato? Forse ho bisogno di creare chiamate asincrone ai servizi web? Ma poi come aspettare che tornino tutti prima di andare avanti?
Ho avuto l'impressione che volesse che tutti fossero completati prima di continuare. –
@Steven: che può fare tramite Task.WaitAll - ma può fare altro lavoro mentre sta aspettando, se è disponibile, se è un'opzione. Casi come questo, però, spesso funzionano con Task.WaitAny, dato che di solito puoi iniziare alcuni dei lavori non appena alcune delle attività sono completate - è raro che siano necessari 7 risultati diversi per eseguire qualsiasi elaborazione ... –
Sei bene, funzionerà anche questo, e in modo più flessibile di quello che ho suggerito. –