I have a Parallel.ForEach loop that returns an erroneous result. Some items in the original collection seem to be processed multiple times while others are not processed at all.