Parallel.For
разбивает работу на несколько параллельных итераций. По умолчанию он использует планировщик задач по умолчанию для планирования итераций, который по существу использует текущий поток, а также количество потоков пула потоков. Существуют перегрузки, которые позволят вам изменить это поведение.
Параллельный цикл может выглядеть очень похоже на обычный цикл, но на самом деле есть ряд важных отличий. Прежде всего, порядок итераций не гарантируется. То есть код не может принимать какой-либо конкретный порядок. Это приведет к непредсказуемым результатам.
Кроме того, поскольку код может выполняться в нескольких потоках, обработка исключений полностью отличается от регулярного цикла for. Parallel.For
будет перехватывать исключения для потоков и перенаправлять их в вызывающий поток как внутренние исключения в экземпляре AggregateException
.
Для получения дополнительной информации, пожалуйста, проверьте Параллельное программирование с Microsoft .NET по шаблонам и методикам Microsoft.