Implementing this method allows an MTS object to perform any cleanup required before it's recycled or destroyed. This method is called by the MTS run-time environment whenever an object is deactivated.
Provided By
void IObjectControl::Deactivate ( );.
Remarks
The MTS run-time environment calls the Deactivate method whenever an object that supports the IObjectControl interface is deactivated. An object is deactivated when it returns from a method in which it called SetComplete or SetAbort, when the transaction in which it executed is committed or aborted, or when the last client to hold a reference on it releases its reference.
If the component supports recycling (returns TRUE from the CanBePooled method), you should use the Deactivate method to reset the object's state to the state in which the Activatemethod expects to find it. You can also use the Deactivate method to release the object's ObjectContext reference or to do other context-specific cleanup. You can't do this in the Release method or the destructor, because the IObjectContext interface isn't accessible from the destructor or any of the IUnknown methods. Even if an object supports recycling, it can be beneficial to release certain reusable resources in its Deactivate method. For example, ODBC provides its own connection pooling. It's more efficient to pool a database connection in a general connection pool where it can be used by other objects than it is to keep it tied to a specific object in an object pool.
See Also
Deactivating Objects, Object Pooling and Recycling