Ich rufe einen langsamen Webservice parallel an. Die Dinge waren großartig, bis ich realisierte, dass ich einige Informationen vom Service zurückbekommen musste. Aber ich sehe nicht, wo ich die Werte zurückbekomme. Ich kann nicht in die Datenbank schreiben, HttpContext.Current scheint Null innerhalb einer Methode namens mit Parallel.ForEachWie sammle ich Rückgabewerte von Parallel.ForEach?
Unten ist ein Beispielprogramm (in Ihrem Kopf, stellen Sie sich bitte einen langsamen Web-Service anstelle einer Zeichenfolge Verkettung)
using System;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
WordMaker m = new WordMaker();
m.MakeIt();
}
public class WordMaker
{
public void MakeIt()
{
string[] words = { "ack", "ook" };
ParallelLoopResult result = Parallel.ForEach(words, word => AddB(word));
Console.WriteLine("Where did my results go?");
Console.ReadKey();
}
public string AddB(string word)
{
return "b" + word;
}
}
}
Eine andere Überlastung von 'Parallel.ForEach' sein kann, was Sie wollen: http://msdn.microsoft.com/en-us/library/ dd991486.aspx –
Leider kann man das nicht wirklich so machen. 'Parallel.Foreach()' wurde einfach nicht dafür entwickelt, die Rendite zu verfolgen. Ich würde jedoch vorschlagen, 'ref' Parameter in Ihrer' AddB' Funktion zu verwenden. Das könnte es tun. –
@PhillipSchmidt: Nicht mit der im Beispiel ohnehin verwendeten Überlast ... –