Paralelizujete pouze výčet assertQueue a pak jej "unparalelizovat" zpět do obyčejného IEnumerable . To vše se děje před foreach smyčka dokonce začíná. Pak použijete obyčejný IEnumerable pomocí foreach který spouští tělo smyčky sériově.
Existuje mnoho způsobů, jak paralelně spustit tělo smyčky, ale první, který vás napadne, je použití Parallel.ForEach :
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});