Control Flow Activities in WF
The .NET Framework 4.6.1 provides several activities for controlling flow of execution within a workflow. Some of these activities (such as Switch
and If
) implement flow control structures similar to those in programming environments such as Visual C#, while others (such as Pick
) model new programming structures.
Note that while activities such as the Parallel
and ParallelForEach
activities schedule multiple child activities for execution simultaneously, only a single thread is used for a workflow. Each child activity of these activities executes sequentially and successive activities do not execute until previous activities either complete or go idle. As a result, these activities are most useful for applications in which several potentially blocking activities must execute in an interleaved fashion. If none of the child activities of these activities go idle, a Parallel
activity executes just like a Sequence
activity, and a ParallelForEach
activity executes just like a ForEach
activity. If, however, asynchronous activities (such as activities that derive from AsyncCodeActivity) or messaging activities are used, control will pass to the next branch while the child activity waits for its message to be received or its asynchronous work to be completed.
Flow control activities
Activity | Description |
---|---|
DoWhile | Executes the contained activities once and continues to do so while a condition is true . |
ForEach<T> | Executes an embedded statement in sequence for each element in a collection. ForEach<T> is similar to the keyword foreach , but is implemented as an activity rather than a language statement. |
If | Executes contained activities if a condition is true , and can execute activities contained in the Else property if the condition is false . |
Parallel | Executes contained activities in parallel. |
ParallelForEach<T> | Executes an embedded statement in parallel for each element in a collection. |
Pick | Provides event-based control flow modeling. |
PickBranch | Represents a potential path of execution in a Pick activity. |
Sequence | Executes contained activities in sequence. |
Switch<T> | Selects one choice from a number of activities to execute, based on the value of a given expression. |
While | Executes contained activities while a condition is true . |