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


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

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

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

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

Действие Описание
DoWhile Выполняет содержащиеся в нем действия один раз, затем продолжает выполнять их, пока условие равно true.
ForEach<T> Последовательно выполняет внедренную инструкцию в последовательность для каждого из элементов коллекции. Объект ForEach<T> аналогичен ключевому слову foreach, но реализуется как действие, а не как инструкция языка.
If Выполняет содержащиеся действия в случае, если условие равно true; может выполнять действия, содержащиеся в свойстве Else, если условие равно false.
Parallel Параллельно выполняет содержащиеся действия.
ParallelForEach<T> Выполняет внедренную инструкцию параллельно для каждого из элементов коллекции.
Pick Предоставляет моделирование потока управления на основе событий.
PickBranch Представляет потенциальный путь выполнения в действии Pick.
Sequence Выполняет содержащиеся действия последовательно.
Switch<T> Выбирает для выполнения одно действие из нескольких в зависимости от значения указанного выражения.
While Выполняет содержащиеся действия, если условие равно true.