zu verwenden Ich habe gerade begonnen, die TPL zu verwenden, und ich möchte mehrere Aufrufe an Web-Services parallel geschehen. Soweit ich das beurteilen kann, sehe ich zwei Möglichkeiten, dies zu tun.Was wäre eine bessere Möglichkeit, Task parallel Bibliothek
Entweder 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
//...
});
Oder 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.
Ohne Berücksichtigung, wenn die Syntax korrekt ist oder nicht, werden diese equivilant?
Werden sie das gleiche Ergebnis liefern? Wenn nicht, warum? und was ist vorzuziehen?
Vielen Dank für die Antwort. Am Ende habe ich Parallel.ForEach verwendet und wir sehen eine Verbesserung der Reaktionszeit um 25% auf unserer Produktion - 16 Kernmaschinen.Ich vermute, dass der größte Teil des Gewinns in der parallelen Datenverarbeitung liegt und nicht in den parallelen Aufrufen der Webdienste selbst. –