IEnlistmentNotification.Commit(Enlistment) メソッド

定義

トランザクションがコミットされていることを参加オブジェクトに通知します。

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

パラメーター

enlistment
Enlistment

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

注釈

トランザクション マネージャーは、コミットメントの 2 番目のフェーズで、すべての参加者にトランザクションのコミットを指示するときに、参加オブジェクトのこのメソッドを呼び出します。

リソース マネージャーは、トランザクションを完了するために必要な作業を実行し、enlistment パラメーターで Done メソッドを呼び出して完了したことを TM に通知する必要があります。

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

適用対象