Paralelizujesz tylko wyliczenie assertQueue
samego siebie, a następnie "nierównolegle" go z powrotem do zwykłego IEnumerable
. To wszystko dzieje się przed foreach
pętla nawet się zaczyna. Następnie używasz zwykłego IEnumerable
z foreach
który seryjnie uruchamia ciało pętli.
Istnieje wiele sposobów na równoległe uruchomienie ciała pętli, ale pierwszym, który przychodzi na myśl, jest użycie Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});