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);
});