IEnlistmentNotification.InDoubt(Enlistment) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
告知登記的物件交易的狀態不確定。
public:
void InDoubt(System::Transactions::Enlistment ^ enlistment);
public void InDoubt (System.Transactions.Enlistment enlistment);
abstract member InDoubt : System.Transactions.Enlistment -> unit
Public Sub InDoubt (enlistment As Enlistment)
參數
- enlistment
- Enlistment
Enlistment 物件,用來傳送回應給交易管理員。
備註
當交易管理員已對單一長期資源叫用單一階段認可作業,然後在取得交易結果之前,中斷與長期資源的連線時,就會針對變動性資源呼叫這個方法。 此時,無法安全地判斷交易結果。
如同 InDoubt 視為交易的最終狀態,您不應該在呼叫 InDoubt 之後呼叫 Commit 或 Rollback 。
注意
針對變動性資源的這個方法實作,應該會對受影響的資料執行它所瞭解的任何復原或內含專案作業。 它也必須在 完成其工作時, enlistment
在 參數上的 上呼叫 Done 方法。
如果資源管理員已永久登記,但未透過呼叫 Done 方法來回應,則交易管理員不確定資源管理員已收到 InDoubt 呼叫。 因此,交易管理員會持續等候回應,並維護與此交易相關的資訊。 如果 Done 從未呼叫 ,這項資訊會無限期保留在記憶體或全系統資源中。 這會導致資源無法回收。 如果是分散式交易,最終可能會填入 MSDTC 記錄檔,以停止 MSDTC 程式。 在 所 System.Transactions 管理的交易案例中,這會導致資源管理員進程的記憶體耗用量逐漸增加且持續增加。 因此,當您的資源管理員完成準備工作時,請務必呼叫 Done 方法。