IObjectContext::D isableCommit 方法 (comsvcs.h)

声明对象的事务更新处于不一致状态,并且不能以当前状态提交。

语法

HRESULT DisableCommit();

返回值

此方法可以返回以下值。

返回代码 说明
S_OK
该方法已成功完成。 在对象调用 EnableCommitSetComplete 之前,无法提交对象的事务更新。
E_UNEXPECTED
发生了意外错误。 如果一个对象将其 IObjectContext 指针传递给另一个对象,而另一个对象使用此指针调用 DisableCommit, 则可能会发生这种情况。 IObjectContext 指针在最初获取它的对象的上下文之外无效。
CONTEXT_E_NOCONTEXT
当前 对象没有与之关联的上下文。 这可能是因为它不是使用 COM+ CreateInstance 方法之一创建的。

注解

可以使用 DisableCommit 方法防止事务在有状态对象的方法调用之间过早提交。 当对象调用 DisableCommit 时,它指示其工作不一致,并且无法完成其工作,直到它收到来自客户端的进一步方法调用。 它还指示它需要保持其状态才能执行该工作。 这可以防止 COM+ 在从方法调用返回时停用对象并回收其资源。 当对象调用 DisableCommit 时,如果客户端尝试在对象调用 EnableCommitSetComplete 之前提交事务,事务将中止。

例如,假设你有一个更新数据库的 GeneralLedger 组件。 客户端多次调用 GeneralLedger 对象,以将条目发布到各种帐户。 存在一个完整性约束,指出当最终方法调用返回时,借方必须等于信用额度,或者事务必须中止。 GeneralLedger 对象有一个初始化方法,其中客户端通知客户端要发出的调用序列,而 GeneralLedger 对象调用 DisableCommit。 对象在两次调用之间保持其状态,以便在序列中执行最后一次调用后,对象可以确保在允许提交其工作之前满足完整性约束。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 comsvcs.h

另请参阅

IObjectContext