Variablen richtig entsorgen
Georg M
Gesendet: 27.12.11 10:23
Betreff: Variablen richtig entsorgen


Member

Beiträge: 7

Hallo,
Ich habe eine Klasse 'Parent', die eine Kollektion aus 'Children'-Elementen, auch jeweils Klassen, enthält. Die Children haben eine Eigenschaft 'Parent' die das übergeordnete Objekt referenziert. Damit können Sie dem Parent über Änderungen informieren, was mit Ereignissen in diesem Fall (Kollektion) nicht möglich ist. Ich möchte wissen, wie ich das Parent-Objekt nach der Verwendung korrekt entsorge.

Wenn die Parent-Klasse ihre Aufgabe erledigt hat, entlade ich sie in der ursprünglichen Prozedur mit Set Nothing:
| Sub WorkWithParents
|
| Dim P As New Parent
| P.Marry
| P.MakeChild
| P.MakeAnotherChild
| Set P = Nothing
|
| End Sub

Dadurch wird automatisch die Terminate-Methode des Parent-Objekts aufgerufen, in der ich die Klassenobjekte zerstöre (ChildrenCol ist eine Vba.Collection):
| Private Sub Class_Terminate()
|
| Set ChildrenCol = Nothing
|
| End Sub

Reicht das? Werden dadurch sozusagen die Kinder automatisch elternlos oder bleibt etwas im Speicher zurück? Muss es zur vollständigen Entsorgung so (oder ähnlich) heißen:
| Private Sub Class_Terminate()
|
| Dim C As Children
|
| For Each C In Me.ChildrenCol
| Set C.Parent = Nothing 'Referenz auf Parent entfernen
| Set C = Nothing 'Objekt an sich löschen
| Ne|t
|
| Set ChildrenCol = Nothing
|
| End Sub

Oder checkt Vba von Haus aus die korrekte Entsorgung? In .net gibts ja eine automatisch Garbage-Collection, die nach meinem Verständnis genau das macht.

Vielen Dank für eure Antworten,
Georg




Top of the page Bottom of the page