Hogyan elpusztítani ole-objektum
Hogyan elpusztítani az OLE-objektum?
fogadtatás
Ole-szeretne létrehozni egy objektumot, és dolgozni vele
Ehhez írok -
var MyInterface. IMyInterface;
kezdődik
MyInterface: = CreateOleObject ( "OleServer.ServerName") AS IMyInterface;
MyInterface.CoolAction (Maza, faka);
végén;
Minden működik a lehető legjobb módon, de:
futásidejű Hirtelen akart OSVOD memória én Ole-objektum,
Hogyan lehet, hogy valami hasonló MyInterface.Free?
MyInterface: = nil; // egy mutatót
Általánosságban elmondható, hogy vége előtt Delphi maga valamennyi kibocsátást
2Serg,
de semmi, mint ez: (((
egy ilyen dolog csak akkor, ha az utazást
var MyInterface. Variant;
És ha ezt (vagyis használjunk Késői kötés), akkor még mindig a memóriában, miután a szerencsétlen OLE-objektumok nem közölnek.
Hogyan legyünk. Én egy zsákutcába.
Hiszed vagy sem.
Ez nem segít MyInterface: = nulla. száz százalékban nem segít.
Én tette meg. és újra csak megpróbáltam.
Így elgépelt maga a tárgy, nem megkönnyebbült refcount = 0. Meg lehet próbálni MyInterface._Release, de ez chernukha - ha MyInterface: = nil Delphi ez az eljárás maga, így nem valószínű, hogy segítsen
Nem, még mindig ebben valami kód hibás. Ha egy változó felület, akkor megpróbál létrehozni egy objektumot közvetlenül az CoCreateInstance és kiadása nulla. És ha használja CreateOleObject, akkor fog egy mutató típusú Variant, felszabadítjuk Unassigned. Tehát, úgy tűnik, meg kell dolgozni. És mellesleg, a tárgy nem rendelkezik módszerrel, mint például a „Quit”?
Szerver - DLL vagy EXE? Ön által írt vagy egy harmadik fél? Ha EXE, akkor vagy le van tiltva a memóriában (például az úgynevezett LockServer), vagy hibás a mechanizmus referencia számlálás. Ha a DLL, a porobuj CoFreeUnusedLibraries.
Memória: 0.72 MB
Idő: 0.034 c