共用方式為


IEnlistmentNotification.InDoubt(Enlistment) 方法

定義

告知登記的物件交易的狀態不確定。

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 之後呼叫 CommitRollback

注意

針對變動性資源的這個方法實作,應該會對受影響的資料執行它所瞭解的任何復原或內含專案作業。 它也必須在 完成其工作時, enlistment 在 參數上的 上呼叫 Done 方法。

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

適用於