TransactedReceiveScope 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
一个活动,用于限定由收到的消息发起的事务的生存期范围。 事务可以流入发起消息的工作流中,也可以在收到消息时由调度程序创建。
public ref class TransactedReceiveScope sealed : System::Activities::NativeActivity
[System.Windows.Markup.ContentProperty("Body")]
public sealed class TransactedReceiveScope : System.Activities.NativeActivity
[<System.Windows.Markup.ContentProperty("Body")>]
type TransactedReceiveScope = class
inherit NativeActivity
Public NotInheritable Class TransactedReceiveScope
Inherits NativeActivity
- 继承
- 属性
示例
下面的示例演示如何在 TransactedReceiveScope 活动中使用 Sequence 类。
return new Sequence
{
Activities =
{
new WriteLine { Text = "Service workflow begins." },
new System.ServiceModel.Activities.TransactedReceiveScope
{
Variables = { requestMessage, replyMessage },
Request = receive,
Body = new Sequence
{
Activities =
{
new WriteLine { Text = new InArgument<string>("Server side: Receive complete.") },
new WriteLine { Text = new InArgument<string>(new VisualBasicValue<string>() { ExpressionText = "\"Server side: Received = '\" + requestString.toString() + \"'\"" }) },
new PrintTransactionInfo(),
new Assign<string>
{
Value = new InArgument<string>("Server side: Sending reply."),
To = new OutArgument<string>(replyMessage)
},
new WriteLine { Text = new InArgument<string>("Server side: Begin reply.") },
new SendReply
{
Request = receive,
Content = SendContent.Create(new InArgument<string>(replyMessage)),
},
new WriteLine { Text = new InArgument<string>("Server side: Reply sent.") },
},
},
},
new WriteLine { Text = "Server workflow ends." },
},
};
注解
使用 TransactedReceiveScope 活动,您可以控制流事务的生存期。
警告
对于启动TransactedReceiveScope活动 (TransactedReceiveScope包含Receive设置为 true) 的活动CanCreateInstance的 ,将在运行时开始执行该TransactedReceiveScope活动之前创建事务。 此事务并不是工作流活动层上的环境,而是基础持久性层上的环境。 如果在执行工作流的过程中先遇到 Persist 活动,再遇到 TransactedReceiveScope 活动,则运行时将尝试在环境事务下保留。 此行为将导致出现阻止情况,直到事务完成。 由于工作流执行尚未到达 Body 部分,因此事务无法完成。 此死锁会导致工作流停止响应,直到事务超时。事务超时时,新创建的实例将中止。
重要
无论何时使用 TransactedReceiveScope,都建议将所有接收都置于工作流内的 TransactedReceiveScope 活动中。
重要
如果 TransactedReceiveScope 且消息按错误顺序到达,则在尝试提交第一个不按顺序的消息时,工作流会中止。 必须确保工作流在空闲时始终处于一致的停止点。 这会使您可以在工作流中止时,从以前的持久点重新启动工作流。
构造函数
| TransactedReceiveScope() |
初始化 TransactedReceiveScope 类的新实例。 |
属性
| Body |
获取或设置构成 Activity 活动主体的 TransactedReceiveScope。 |
| CacheId |
获取缓存的标识符,该标识符在工作流定义的作用域内是唯一的。 (继承自 Activity) |
| CanInduceIdle |
获取或设置一个值,该值指示活动是否会使工作流进入空闲状态。 (继承自 NativeActivity) |
| Constraints |
获取可配置的 Constraint 活动的集合,用于为 Activity 提供验证。 (继承自 Activity) |
| DisplayName |
获取或设置用于调试、验证、异常处理和跟踪的可选友好名称。 (继承自 Activity) |
| Id |
获取一个标识符,该标识符在工作流定义的作用域内是唯一的。 (继承自 Activity) |
| Implementation |
活动的执行逻辑。 (继承自 NativeActivity) |
| ImplementationVersion |
获取或设置活动的实现版本。 (继承自 NativeActivity) |
| Request |
获取或设置与此 Receive 活动关联的 TransactedReceiveScope 活动。 |
| Variables |
获取与此 Variable 关联的 TransactedReceiveScope 的集合。 |