Você está paralelizando apenas a enumeração do
assertQueue
em si e, em seguida, "não paralelizando" de volta para um IEnumerable
comum . Isso tudo acontece antes do foreach
loop mesmo começa. Então você usa o IEnumerable
comum com o foreach
que executa o corpo do loop em série. Existem muitas maneiras de executar o corpo do loop em paralelo, mas a primeira que vem à mente é usando
Parallel.ForEach
:Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});