Bạn chỉ đang song song hóa việc liệt kê assertQueue chính nó và sau đó "vô song" nó trở lại thành một IEnumerable bình thường . Tất cả điều này xảy ra trước foreach vòng lặp thậm chí bắt đầu. Sau đó, bạn sử dụng IEnumerable thông thường với foreach chạy phần thân của vòng lặp nối tiếp nhau.
Có nhiều cách để chạy song song phần nội dung của vòng lặp nhưng cách đầu tiên bạn nghĩ đến là sử dụng Parallel.ForEach :
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});