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

注意

针对易失性资源的此方法的实现应对受影响的数据执行它所理解的任何恢复或包含操作。 它还必须在 Done 完成其工作后对 参数调用 enlistment 方法。

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

适用于