IEnlistmentNotification.Commit(Enlistment) メソッド

定義

トランザクションのコミット中であることを参加オブジェクトに通知します。Notifies an enlisted object that a transaction is being committed.

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

パラメーター

enlistment
Enlistment

トランザクション マネージャーに対して応答を送信するために使用する Enlistment オブジェクト。An Enlistment object used to send a response to the transaction manager.

注釈

トランザクションマネージャーは、コミットメントの2番目のフェーズで、すべての参加要素がトランザクションをコミットするように指示するときに、このメソッドを呼び出します。The transaction manager calls this method of an enlisted object during the second phase of a commitment, when it instructs all participants to commit the transaction.

リソースマネージャーは、トランザクションを完了するために必要な作業を実行し、 Done enlistmentパラメーターに対してメソッドを呼び出すことによって、その処理が完了したことを TM に通知する必要があります。The resource manager should perform any work necessary to finish the transaction and then inform the TM that it has finished by calling the Done method on the enlistment parameter.

リソースマネージャーが永続的にを参加させても、メソッドを呼びDone出すことによって応答しない場合、トランザクションマネージャーは、 Commitリソースマネージャーが呼び出しを受信したことを認識できません。If the resource manager has enlisted durably, but does not respond by calling Done method, the transaction manager is unsure that the resource manager has received the Commit call. そのため、トランザクションマネージャーは応答を待機し続け、このトランザクションに関連する情報を保持します。As such, the transaction manager keeps waiting for a response, and maintains information relevant to this transaction. Done呼び出されない場合、この情報はメモリ内またはシステム全体のリソース内で無期限に保持されます。If Done is never called, this piece of information is kept around indefinitely in memory or in a system-wide resource. これにより、リソースを再利用できなくなります。This results in resources not being able to be reclaimed. 分散トランザクションの場合、msdtc ログが最終的にいっぱいになり、MSDTC プロセスが停止する可能性があります。In the case of a distributed transaction, this could eventually fill the MSDTC log which halts the MSDTC process. によって管理されるトランザクションのSystem.Transactions場合、これにより、リソースマネージャーのプロセスのメモリ消費量が徐々に増加します。In the case of a transaction managed by System.Transactions, this results in a gradual and continual increase in the memory consumption of the resource manager's process. したがって、リソースマネージャーで準備作業をDone行った後に、メソッドを呼び出すことが重要です。Therefore, it is crucial that you call the Done method once your resource manager is done with your prepare work.

適用対象