Stai parallelizzando solo l'enumerazione di assertQueue
stesso e poi "non parallelizzandolo" di nuovo in un normale IEnumerable
. Tutto questo accade prima del foreach
il ciclo inizia anche. Quindi usi il normale IEnumerable
con il foreach
che esegue il corpo del ciclo in serie.
Esistono molti modi per eseguire il corpo del ciclo in parallelo, ma il primo che viene in mente è usare Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});