COM InProc Server richtig beenden

RuFFnEcK

Erfahrenes Mitglied
Hallo zusammen ;)

Ich hab da mal wieder ein Problem und weiß nicht weiter:

Der Titel sagt eigentlich schon alles, ich mach es wie folgt:

Code:
void CBBDiagnosticToolApp::DisconnectCOMServer(void)
{
	if(m_pICOM != NULL)
	{
		m_pICOM->Release();
		m_pICOM = NULL;
	}
]
Mein Diagnose Programm startet ein Installations Programm.
Das Installationsprogramm überschreibt die dll (in der der COM Server verpackt ist),
die jedoch von dem Diagnoseprogramm verwendet wird. Ich gebe zwar den COM Server
frei, aber dennoch hat der noch einen Handle auf den COM Server, da das Installations
Programm nicht die dll überschreiben kann...

Weiß jemand wie ich einen COM Server richtig beende, so dass die dll überschrieben werden kann?

Danke und Gruss
RuFF
 
Hallo nochmal,

also ich umgehe das ganze, indem ich das Diagnoseprogramm beende...
Jedoch find ich das nicht besonders schön und würde viel lieber den COM Server
vernünftig beenden, um ihn nach der Installation wieder neu zu starten...

Das mir den COm Servern läuft ja so, dass intern ein Referenzzähler hochgezählt wird...
Dieser sollte eigentlich auf 0 runtergezählt werden beim freigeben der einzigen Refrenz
und anschließend auch die DLL freigegeben werden.
Das passiert aber nicht! Die DLL wird erst freigegeben, wenn das Programm beendet wird!

Liegt das viell. daran dass Visual Studio den optimiert, indem die DLL erst freigegeben wird, wenn das Programm beendet wird?!
Um somit die Laufzeit zu reduzieren, im Falle eines neustartes des COM Servers zur Laufzeit des Programms?!

Das Problem mit der COM Geschichte ist, dass es einfach zu wenig zu lesen gibt :(

Bin guter Hoffnung, dass da trotzdem jemand was zu weiß, auch wenns eigentlich keine aktuelle Programmiertechnik mehr ist...

Danke und Gruss
RuFF
 
Zurück