Managing Server Agent Object Lifetimes
The server agent maintains the lifetimes of several SIP-specific objects defined by classes in the.
For example, when a transaction is terminated, the server agent releases not only the correspondingobject, but also the object for that transaction and any associated objects.
This issue is independent of the garbage collection that the .NET common language runtime (CLR) performs. All classes whose instances have controllable lifetimes implement the standard IDisposable interface, which enables application control of the object lifetime independent of the CLR. Because many SIP objects such as transactions have no reason to persist after completion, reclaiming their resources immediately improves efficiency and performance. This occurs by a call from the server agent object to the implementation of the Close() method on the object whose resources must be deallocated.
The base implementation of Close() on the Transaction class simply invokes a virtual implementation of the IDisposable.Dispose() method. Any class extending the or can optionally override Close() with a more application-specific implementation that extends the life of the transactions as needed.
Any overriding implementation of Close() must ensure Dispose() is called after processing is complete, or incur a possible performance penalty.