Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to clean up leftover Objects?
Message
De
26/03/2010 08:15:34
 
 
À
25/03/2010 17:07:24
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
Database:
Visual FoxPro
Divers
Thread ID:
01457283
Message ID:
01457402
Vues:
93
Hi Matt.

>In the code I declare a public loBo variable to hold the object so I can make further use of it from the command window if I wanted to. After further testing, I RELEASE loBo, then I try to open the parent class of the class I tested so I can edit it, but it says: "Remove classes from memory?" and I click "Remove", then it says "Cannot modify a class that is in use".

Instead of RELEASE loBo, use loBo.Release (you may have to add a Release method to the object). The difference is that RELEASE loBo releases the memory variable holding a reference to the object, but not necessarily the object itself if a reference to it is also stored somewhere else. For example, suppose loBo contains a reference to ObjectA, ObjectA contains (in a property) a reference to ObjectB, and ObjectB contains (in a property) a reference to ObjectA. RELEASE loBo releases the memory variable, but because ObjectB also contains a reference to ObjectA, ObjectA (and therefore ObjectB) can't be destroyed. However, since the memory variable is now gone, you have no way to reference either ObjectA or B.

Instead, in the Release method of your objects, make sure you clean up any references that may be outstanding. For example, in ObjectA.Release:
This.oObjectB.Release()
release This
In ObjectB.Release:
This.oObjectA = .NULL.
release This
Now, loBo.Release() will release all references to both ObjectA and B.

Doug
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform