Как мне выполнить Parallel.ForEach после завершения? - PullRequest
5 голосов
/ 04 октября 2011

Я хочу взять набор объектов и запустить процедуру для всех из них.Порядок не имеет значения, и каждая из них является независимой операцией, поэтому я подумал, что вызову Parallel . ForEach для коллекции.Но я хочу продолжить все это после завершения.

Где находится ContinueWith эквивалент или перегрузка ForEach , которая выполняет другое действие / задачу для запусказавершение?Я застрял, опрашивая значение ParallelLoopResult . IsCompleted , пока оно не вернется к истине?

Метод ContinueWhenAll всегда ожидает массив задач.Должен ли я вместо этого проецировать набор объектов в новые задачи для каждого?Как мне тогда запустить массив задач одновременно и параллельно?

Этот вопрос похож, но он касается старых расширений 3.5 TPL, которым я верю.Я открыт для решений вне библиотеки параллельных задач, если это необходимо.

1 Ответ

9 голосов
/ 04 октября 2011

Parallel.ForEach блокируется до его завершения, поэтому вы можете просто делать все, что вам нужно после вызова метода.

...