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