Вие паралелизирате само изброяването на assertQueue
и след това го "депаралелизира" обратно в обикновен IEnumerable
. Всичко това се случва преди foreach
цикъл дори започва. След това използвате обикновения IEnumerable
с foreach
който изпълнява тялото на цикъла последователно.
Има много начини за паралелно изпълнение на тялото на цикъла, но първият, който идва на ум, е използването на Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});