U parallelliseert alleen de opsomming van de assertQueue zichzelf en vervolgens "ongeëvenaard" het terug in een gewoon IEnumerable . Dit gebeurt allemaal vóór de foreach lus begint zelfs. Dan gebruik je de gewone IEnumerable met de foreach die de body van de lus serieel uitvoert.
Er zijn veel manieren om de body van de lus parallel te laten lopen, maar de eerste die in je opkomt is het gebruik van Parallel.ForEach :
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});