Я использую TPL в своем текущем проекте и используя Parallel.Foreach для вращения многих потоков. Класс Task содержит Wait(), чтобы дождаться завершения задачи. Как это, как я могу дождаться завершения Parallel.ForEach, а затем перейти к выполнению следующих операторов?
Как я могу дождаться завершения Parallel.ForEach
Ответ 1
Вам не нужно ничего делать, Parallel.Foreach()
будет ждать завершения всех своих разветвленных задач. Из вызывающего потока вы можете рассматривать его как один синхронный оператор и, например, обернуть его внутри try/catch.
Ответ 2
Вам не нужно, чтобы с Parallel.Foreach: он выполняет только foreach столько потоков, сколько есть доступных процессоров, но он возвращает синхронно.
Более подробную информацию можно найти здесь