Enlistment.Done 方法

定义

指示事务参与者已完成其工作。

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

注解

在事务提交的最后阶段,事务管理器会调用参与者的 CommitRollback InDoubt 方法,具体取决于事务是提交还是回滚。 资源管理器应执行完成事务所需的任何工作,然后通过对参数调用 Done 方法 enlistment 通知事务管理器已完成该事务。

如果资源管理器已持续登记,但未通过调用 Done 方法做出响应,则事务管理器不确定资源管理器已收到相应的通知调用。 因此,事务管理器会一直等待响应,并维护与此事务相关的信息。 如果 Done 从不调用,则此部分信息无限期地保留在内存中或系统范围内的资源中。 这会导致资源无法回收。 对于分布式事务,这最终可以填充停止 MSDTC 进程的 MSDTC 日志。 对于由其 System.Transactions管理的事务,这会导致资源管理器进程的内存消耗逐渐不断增加。 因此,在资源管理器完成准备工作后,调用 Done 该方法至关重要。

登记可以在准备阶段调用该方法之前随时调用DonePrepared该方法。 通过这样做,登记正在投一个只读投票,这意味着它投票提交交易,但不需要获得最终结果。 请注意,调用此方法后,登记的参与者不会收到事务管理器的进一步通知。

适用于

另请参阅