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 的集合。 |