Vous ne parallélisez que l'énumération de assertQueue
lui-même, puis en le "déparallélisant" dans un IEnumerable
ordinaire . Tout cela se passe avant le foreach
boucle commence même. Ensuite, vous utilisez le IEnumerable
ordinaire avec le foreach
qui exécute le corps de la boucle en série.
Il existe de nombreuses façons d'exécuter le corps de la boucle en parallèle, mais la première qui me vient à l'esprit est d'utiliser Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});