次の方法で共有


IEnlistmentNotification.InDoubt(Enlistment) メソッド

定義

トランザクションのステータスが未決定であることを参加オブジェクトに通知します。

public:
 void InDoubt(System::Transactions::Enlistment ^ enlistment);
public void InDoubt (System.Transactions.Enlistment enlistment);
abstract member InDoubt : System.Transactions.Enlistment -> unit
Public Sub InDoubt (enlistment As Enlistment)

パラメーター

enlistment
Enlistment

トランザクション マネージャーに対して応答を送信するために使用する Enlistment オブジェクト。

注釈

トランザクション マネージャーが単一の永続リソースに対して単一フェーズコミット操作を呼び出した後、トランザクションの結果を取得する前に永続リソースへの接続が失われた場合、このメソッドは揮発性リソースに対して呼び出されます。 その時点で、トランザクションの結果を安全に決定することはできません。

トランザクションの最終状態と見なされるためInDoubt、 を呼び出した後に または Rollback を呼び出CommitInDoubtさないでください。

注意

揮発性リソースに対するこのメソッドの実装では、影響を受けるデータに対して認識される回復操作または包含操作を実行する必要があります。 また、作業が Done 完了したら、 enlistment パラメーターの で メソッドを呼び出す必要があります。

リソース マネージャーが永続的に参加しているが、メソッドを呼び出して応答しない場合、トランザクション マネージャーはリソース マネージャーが呼び出 Done しを InDoubt 受け取ったかどうか不明です。 そのため、トランザクション マネージャーは応答を待機し続け、このトランザクションに関連する情報を保持します。 が呼び出されない場合 Done 、この情報はメモリ内またはシステム全体のリソース内で無期限に保持されます。 これにより、リソースを再利用できなくなります。 分散トランザクションの場合、最終的に MSDTC ログがいっぱいになり、MSDTC プロセスが停止する可能性があります。 によって管理される System.Transactionsトランザクションの場合、これにより、リソース マネージャーのプロセスのメモリ消費量が徐々に継続的に増加します。 そのため、リソース マネージャーが準備作業を Done 完了したら、 メソッドを呼び出す必要があります。

適用対象