The msdn documentation about order preservation in PLINQ states the following about ForAll()
.
Order preservation is usually only applied to results - i.e. the input can be processed in any order, but is returned in the original order.
As ForAll
doesn't return anything, it doesn't really have any effect that I'm aware of.
The only way of making ordering apply to the processing would be to finish item 0 before processing item 1, before processing item 2 etc... at which point you've got no parallelism.