Derzeit habe ich einen Abschnitt Code, der etwa 7 Web Service-Aufrufe an verschiedene Anbieter für Daten vornehmen muss. Jeder Aufruf dauert einige Sekunden, also möchte ich sie parallel ausführen, um die Dinge zu beschleunigen.Verwenden von .Net Parallel Extensions (Parallel.Invoke) für mehrere asynchrone Aufrufe?
Ich habe meine 7 Anrufe in eine Parallel.Invoke eingewickelt, die gut funktioniert, ein paar Dinge gleichzeitig zu laufen, aber auf einem 2-Core-Server wird es nur 2 zu einer Zeit ausführen, eine pro Kern. Da alles, was ich tue, wartet auf die Web-Service-Anrufe, um zurückzukehren, würde ich wollen, dass es alle 7 holen und warten auf sie zurückkommen.
Gibt es keine Möglichkeit, dies zu tun? Oder ist mein Ansatz falsch? Vielleicht muss ich asynchrone Aufrufe an die Webdienste erstellen? Aber wie kann man dann darauf warten, dass alle wiederkommen, bevor sie weiterziehen?
Ich hatte den Eindruck, dass er wollte, dass alle fertig waren, bevor er fortfuhr. –
@Steven: Was kann er über Task.WaitAll tun - aber er kann andere Arbeit erledigen, während er wartet, wenn es verfügbar ist, wenn das eine Option ist. Fälle wie diese arbeiten jedoch oft mit Task.WaitAny, da Sie normalerweise einen Teil der Arbeit starten können, sobald einige der Aufgaben abgeschlossen sind - es ist selten, dass Sie 7 verschiedene Ergebnisse benötigen, um eine Verarbeitung durchzuführen ... –
Sie sind richtig, das wird auch funktionieren und flexibler als das, was ich vorgeschlagen habe. –