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が にtrue
設定されたアクティビティをReceive含む ) の場合、ランタイムがアクティビティ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 のコレクションを取得します。 |
メソッド
適用対象
.NET