Control Flow Activities in WF

This topic applies to Windows Workflow Foundation 4 (WF4).

The .NET Framework version 4 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

Executes an embedded statement in sequence for each element in a collection. ForEach 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

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

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.