Re: Reference counting and graceful termination of an ATL singleton.
See CoDisconnectObject. You'll need to keep an internal
reference to your object though, since COM doesn't do that
for you. Also see IExternalConnection - so you can disambiguate
between internal and external references - only useful for out-
of-proc servers of course.
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://vcfaq.mvps.org
=====================================
"SergeV" <s_no_spam_v@a_ca.de_m.org> wrote in message
news:OTFv9C3mHHA.3656@TK2MSFTNGP06.phx.gbl...
If for some reason a client of ATL COM-object terminates abnormally
the object will stay in memory until aborted.
(say, this is an out-of-proc singleton)
No. DCOM has a garbage collection mechanism that will detect this
situation, and release references that used to be held by that client,
within 6 minutes.
Igor, thank you for the reply.
I beg your pardon... Why "No"?
You meant "Yes - DCOM will release lost references for me" - right?
If not DCOM, then I myself can do it (abort). This is not the problem.
The problem was about how to neatly close connection so that free
resources allocated by the object. I.e can the ATL-COM object
forcibly release all references to it? Guess, cannot... :-(
Or at least how to know reference count of the object?
Seems (to me) there is one other than m_dwRef used by DCOM to shut
the server down after the last client exectutes CoUninitialize().
Am I correct?