.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,则执行包含的活动;如果条件为 false,则可以执行属性中包含的Else活动。 |
| Parallel | 并行执行包含的活动。 |
| ParallelForEach<T> | 为集合中的每个元素并行执行嵌入语句。 |
| Pick | 提供基于事件的控制流建模。 |
| PickBranch | 表示活动中 Pick 执行的潜在路径。 |
| Sequence | 按顺序执行包含的活动。 |
| Switch<T> | 根据给定表达式的值,从要执行的多个活动中选择一个选项。 |
| While | 在条件为 true.. |