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被視為交易的最終狀態,您不應在撥打Commit後撥打Rollback電話InDoubt。
Note
你對易失資源的實作應該會對受影響的資料執行它所理解的復原或控制操作。 完成工作後,也必須呼叫 Done 參數上的方法 enlistment 。
若資源管理器已持續登錄,但未以呼叫 Done 方式回應,交易管理器不確定資源管理器是否已接收呼叫 InDoubt 。 因此,交易管理器會持續等待回應,並保存與本交易相關的資訊。 若 Done 從未被呼叫,該資訊將無限期保存在記憶體或系統整體資源中。 這導致資源無法回收。 在分散式交易中,這最終可能填滿 MSDTC 日誌,導致 MSDTC 程序中止。 若交易由 管理 System.Transactions,會導致資源管理器程序的記憶體消耗逐漸且持續增加。 因此,當您的資源經理完成您的準備工作後,務必致電該 Done 服務。