Share via


Enlistment.Done 方法

定義

指出交易參與者已完成其工作。

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

備註

在交易認可的最後階段,交易管理員會根據交易是要認可還是回復,呼叫 Commit 參與者的 、 RollbackInDoubt 方法。 資源管理員應該執行完成交易所需的任何工作,然後通知交易管理員它已完成,方法是在 參數上 enlistment 呼叫 Done 方法。

如果資源管理員已永久登記,但未透過呼叫 Done 方法來回應,則交易管理員不確定資源管理員已收到個別的通知呼叫。 因此,交易管理員會持續等候回應,並維護與此交易相關的資訊。 如果 Done 從未呼叫 ,這項資訊會無限期保留在記憶體或全系統資源中。 這會導致資源無法回收。 如果是分散式交易,最終可能會填入 MSDTC 記錄檔,以停止 MSDTC 程式。 在 所 System.Transactions 管理的交易案例中,這會導致資源管理員進程的記憶體耗用量逐漸增加且持續增加。 因此,當您的資源管理員完成準備工作時,請務必呼叫 Done 方法。

登記可以在準備階段中呼叫 方法之前 Prepared ,隨時呼叫 Done 方法。 如此一來,登記就會轉型唯讀投票,這表示它會在交易上投票認可,但不需要接收最終結果。 請注意,呼叫此方法之後,登記的參與者不會收到來自交易管理員的進一步通知。

適用於

另請參閱