Действия управления потоком в WF
Данный раздел относится к версии Windows Workflow Foundation 4.
.NET Framework, версия 4 содержит несколько действий для управления потоком выполнения внутри рабочего процесса. Некоторые из этих действий (например, Switch и If) реализуют структуры управления потоком управления, аналогичные доступным в средах программирования, таких как Visual C#; другие моделируют новые структуры программирования (например, Pick).
Следует отметить, что хотя такие действия, как Parallel, ParallelForEach и ParallelForEach, планируют одновременное выполнение нескольких дочерних действий, в рабочем процессе применяется лишь один поток. Каждое дочернее действие данных действий выполняется последовательно; последующее действие не выполняется, пока не завершатся или не перейдут в состояние бездействия все предыдущие действия. В результате эти действия больше всего полезны в приложениях, в которых несколько потенциально блокирующих друг друга действий должны выполняться поочередно. Если дочерние действия этих действий не блокируются и не переходят в состояние бездействия, действие Parallel выполняется аналогично действию Sequence, а действие ParallelForEach выполняется аналогично действию ForEach. Однако если применяются асинхронные действия (например, действия, производные от AsyncCodeActivity, или действия обмена сообщениями), то дочерние действия для действия Parallel создают новый поток для собственного выполнения.
Действия управления потоком
Действие | Описание |
---|---|
Выполняет содержащиеся в нем действия один раз, затем продолжает выполнять их, пока условие равно true. |
|
ForEach |
Выполняет внедренную инструкцию последовательно для каждого из элементов в коллекции. Действие ForEach аналогично ключевому слову foreach, но имеет форму действия, а не оператора языка. |
If |
Выполняет содержащиеся действия в случае, если условие равно true; может выполнять действия, содержащиеся в свойстве Else, если условие равно false. |
Parallel |
Параллельно выполняет содержащиеся действия. |
ParallelForEach |
Выполняет внедренную инструкцию параллельно для каждого из элементов коллекции. |
Pick |
Предоставляет моделирование потока управления на основе событий. |
Sequence |
Выполняет содержащиеся действия последовательно. |
Switch |
Выбирает для выполнения одно действие из нескольких в зависимости от значения указанного выражения. |
Выполняет содержащиеся действия, если условие равно true. |