Llamo a un servicio web lento en paralelo. Las cosas fueron geniales hasta que me di cuenta de que necesitaba obtener algo de información del servicio. Pero no veo dónde recuperar los valores. No puedo escribir en la base de datos, HttpContext.Current parece ser nulo dentro de un método llamado usando Parallel.ForEach¿Cómo puedo recopilar valores devueltos de Parallel.ForEach?
A continuación se muestra un programa de ejemplo (en su mente, imagine un servicio web lento en lugar de una cadena de concatenación)
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;
}
}
}
una sobrecarga diferente de 'Parallel.ForEach' puede ser lo que quieren: http://msdn.microsoft.com/en-us/library/ dd991486.aspx –
Desafortunadamente eso no es algo que puedas hacer de esa manera. 'Parallel.Foreach()' simplemente no fue creado para hacer un seguimiento de las devoluciones. Sin embargo, sugiero usar parámetros 'ref' en tu función' AddB'. Eso podría hacerlo. –
@PhillipSchmidt: No con la sobrecarga utilizada en el ejemplo de todos modos ... –