IEnlistmentNotification.Commit(Enlistment) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
通知登记的对象事务正在提交。
public:
void Commit(System::Transactions::Enlistment ^ enlistment);
public void Commit (System.Transactions.Enlistment enlistment);
abstract member Commit : System.Transactions.Enlistment -> unit
Public Sub Commit (enlistment As Enlistment)
参数
- enlistment
- Enlistment
用于将响应发送到事务管理器的 Enlistment 对象。
注解
事务管理器在承诺的第二阶段调用登记对象的此方法,当它指示所有参与者提交事务时。
资源管理器应执行完成事务所需的任何工作,然后通过对 参数调用 Done 方法 enlistment
通知 TM 它已完成。
如果资源管理器已持久登记,但未通过调用 Done 方法做出响应,则事务管理器不确定资源管理器是否已收到 Commit 调用。 因此,事务管理器会一直等待响应,并维护与该事务相关的信息。 如果 Done 从不调用 ,则此信息将无限期地保留在内存中或系统范围的资源中。 这会导致资源无法回收。 对于分布式事务,这最终可能会填充 MSDTC 日志,从而停止 MSDTC 进程。 对于 由 System.Transactions管理的事务,这会导致资源管理器进程的内存消耗逐渐增加且持续增加。 因此,在资源管理器完成准备工作后,调用 Done 方法至关重要。