語言

Enlistment.Done 方法

定義

表示交易參與者已完成其工作。

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

備註

在交易提交的最後階段,交易管理器會呼叫CommitRollbackInDoubt參與者的方法,視交易是要提交還是回滾而定。 資源管理器應執行完成交易所需的工作,然後透過呼叫 Done 參數上的方法 enlistment 通知交易管理器已完成。

若資源管理器已持續登錄,但未以呼叫 Done 方法回應,則交易管理器不確定該資源管理器是否已收到相應的通知呼叫。 因此,交易管理器會持續等待回應,並保存與本交易相關的資訊。 若 Done 從未被呼叫,該資訊將無限期保存在記憶體或系統整體資源中。 這導致資源無法回收。 在分散式交易中,這最終可能填滿 MSDTC 日誌,導致 MSDTC 程序中止。 若交易由 管理 System.Transactions,會導致資源管理器程序的記憶體消耗逐漸且持續增加。 因此,當您的資源經理完成您的準備工作後,務必致電該 Done 服務。

徵兵可以在方法尚未進入準備階段前的任何時間Done呼叫該Prepared方法。 透過此,登錄即投出唯讀投票,意即它對交易投承諾,但不必收到最終結果。 請注意,呼叫此方法後,被列入的參與者不會再收到交易管理器的通知。

適用於

另請參閱