Du parallelliserar bara uppräkningen av assertQueue
sig själv och sedan "unparallellera" den tillbaka till en vanlig IEnumerable
. Allt detta händer före foreach
slingan börjar till och med. Sedan använder du den vanliga IEnumerable
med foreach
som kör slingans kropp i serie.
Det finns många sätt att köra slingans kropp parallellt, men det första man tänker på är att använda Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});