Поделиться через


Действия управления потоком в WF

Данный раздел относится к версии Windows Workflow Foundation 4.

.NET Framework, версия 4 содержит несколько действий для управления потоком выполнения внутри рабочего процесса. Некоторые из этих действий (например, Switch и If) реализуют структуры управления потоком управления, аналогичные доступным в средах программирования, таких как Visual C#; другие моделируют новые структуры программирования (например, Pick).

Следует отметить, что хотя такие действия, как Parallel, ParallelForEach и ParallelForEach, планируют одновременное выполнение нескольких дочерних действий, в рабочем процессе применяется лишь один поток. Каждое дочернее действие данных действий выполняется последовательно; последующее действие не выполняется, пока не завершатся или не перейдут в состояние бездействия все предыдущие действия. В результате эти действия больше всего полезны в приложениях, в которых несколько потенциально блокирующих друг друга действий должны выполняться поочередно. Если дочерние действия этих действий не блокируются и не переходят в состояние бездействия, действие Parallel выполняется аналогично действию Sequence, а действие ParallelForEach выполняется аналогично действию ForEach. Однако если применяются асинхронные действия (например, действия, производные от AsyncCodeActivity, или действия обмена сообщениями), то дочерние действия для действия Parallel создают новый поток для собственного выполнения.

Действия управления потоком

Действие Описание

DoWhile

Выполняет содержащиеся в нем действия один раз, затем продолжает выполнять их, пока условие равно true.

ForEach

Выполняет внедренную инструкцию последовательно для каждого из элементов в коллекции. Действие ForEach аналогично ключевому слову foreach, но имеет форму действия, а не оператора языка.

If

Выполняет содержащиеся действия в случае, если условие равно true; может выполнять действия, содержащиеся в свойстве Else, если условие равно false.

Parallel

Параллельно выполняет содержащиеся действия.

ParallelForEach

Выполняет внедренную инструкцию параллельно для каждого из элементов коллекции.

Pick

Предоставляет моделирование потока управления на основе событий.

Sequence

Выполняет содержащиеся действия последовательно.

Switch

Выбирает для выполнения одно действие из нескольких в зависимости от значения указанного выражения.

While

Выполняет содержащиеся действия, если условие равно true.