Enlistment.Done メソッド


トランザクション参加要素が作業を完了したことを示します。Indicates that the transaction participant has completed its work.

 void Done();
public void Done ();
member this.Done : unit -> unit
Public Sub Done ()


トランザクションのコミットの最終フェーズでは、トランザクション マネージャーを呼び出すか、 CommitRollbackまたはInDoubtトランザクションがコミットまたはロールバックするかどうかに応じて、参加要素のメソッド。During the final phase of the transaction commit, the transaction manager calls either the Commit, Rollback or InDoubt method of the participant, depending on whether the transaction is to be committed or rolled back. リソース マネージャーがトランザクションを終了し、呼び出すことによってこれが完了したこと、トランザクション マネージャーに通知し、必要な作業を実行する必要があります、Doneメソッドをenlistmentパラメーター。The resource manager should perform any work necessary to finish the transaction and then inform the transaction manager that it has finished by calling the Done method on the enlistment parameter.

リソース マネージャーが、永続的に参加しているかどうかが呼び出すことで応答しないDoneメソッドでは、トランザクション マネージャーは、リソース マネージャーが、それぞれの通知呼び出しを受信したことを確認しますが。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 respective notification 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.

参加リストが呼び出すことができます、Doneでいつでも前にメソッドが呼び出されますがPrepared準備フェーズでします。An enlistment can call the Done method at anytime before it has called Prepared in the prepare phase. これにより、参加リスト投票のトランザクションのコミットが、最終結果を受信する必要はありません、つまり読み取り専用の決定をキャストします。By doing so, the enlistment is casting a read only vote, meaning that it votes commit on the transaction but does not need to receive the final outcome. このメソッドが呼び出されると、参加要素通知を受信しないさらに、トランザクション マネージャーからに注意してください。Note that, after this method is called, the enlisted participant receives no further notifications from the transaction manager.