objectControl::D eactivate 方法 (comsvcs.h)
使 COM+ 对象在回收或销毁之前执行所需的清理。
每当停用对象时,COM+ 运行时环境将调用此方法。 不要从此方法对同一活动中的对象进行任何方法调用。
语法
HRESULT Deactivate();
返回值
此方法可以返回标准返回值E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL和S_OK。
注解
每当停用支持 ObjectControl 接口的对象时,COM+ 运行时环境将调用 Deactivate 方法。 当对象从名为 SetComplete 或 SetAbort 的方法返回时,当提交或中止执行它的事务时,或者当对对象保存引用的最后一个客户端释放其引用时,对象将停用。
如果组件支持回收 (从 CanBePooled 方法) 返回 TRUE,则必须使用 Deactivate 方法将对象的状态重置为 Activate 方法期望找到它的状态。 还可以使用 Deactivate 方法释放对象的上下文或执行其他特定于上下文的清理。 即使对象支持回收,在其 Deactivate 方法中释放某些可重用资源也很有用。 例如,ODBC 提供自己的连接池。 与将数据库连接绑定到对象池中的特定对象相比,将数据库连接池化到常规连接池中其他对象可以使用该连接的效率更高。
COM+ 明确禁止在 Deactivate 方法返回 (在其析构函数) 时调用公开 ObjectControl 的对象。 此类调用将导致RPC_E_DISCONNECTED错误。 例如,如果对象已传出对自身的引用,然后在 返回 Deactivate 后重新调用对象,则会导致断开连接错误。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | comsvcs.h |