Registriert seit: 29. Okt 2007
4 Beiträge
|
Re: OCX wird nicht freigegeben
30. Okt 2007, 10:54
Hallo,
erstmal vielen Dank für die schnelle Antwort. Ich habe nun in alle Destroy-Blöcken die es gibt den Wert ComServer.ObjectCount ausgewertet. Tatsächlich steht er in einem Destroy-Block (der letzte der aufgerufen wird) auch auf 0. Jedoch bleibt die OCX wohl noch geladen.
Ich habe nun gedacht, das ich einfach eine Abfrage einbaue die so aussieht:
if ( ComServer.ObjectCount = 0 ) then CoFreeUnusedLibraries;
Aber dann wird das ganze Programm, dass die OCX verwendet, gleich mitbeendet.
"Schieße" ich die OCX ab, wenn der Counter auf 0 steht (immerhin braucht dann wohl keine Anwendung mehr die OCX) und zwar durch diesen Aufruf im Destroy:
if ( ComServer.ObjectCount = 0 ) then ComServer.Free;
Dann verhält es sich so wie es soll, also:
1. Die Anwendung wird gestartet
2. Ein Objekt aus der OCX wird erzeugt
3. Das Objekt wird freigegeben
4. OCX ist freigegeben.
Das klappt tausendmal hintereinander (Objekterzeugung und freigabe) bis die Anwendung selbst beendet wird. Dann gibt es einen Ausnahmefehler von wegen InvalidPointer.
|