Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wie bekommt bzw. löscht man alle Referenzen auf ein Objekt.

0 views
Skip to first unread message

Stefan Borst

unread,
Oct 16, 2009, 11:23:17 AM10/16/09
to
Hallo liebe .NET Gemeinde,

ich würde gerne alle Referenzen auf ein Objekt löschen, also zuerst ein mal
alle Referenzen holen und diese dann löschen. Das könnte dann irgend wie so
aussehen:

public bool deleteAllReferences(object obj)
{
alleReferenzen = holeAlleReferenzen(obj);
foreach(referenz in alleReferenzen)
{
löscheReferenz(referenz);
}
retrun true;
}

Der GarbageCollector muesste dieses Wissen haben, aber wie komme ich daran?

Vielen Dank und Viele Gruesse

Stefan

Armin Zingler

unread,
Oct 16, 2009, 12:24:17 PM10/16/09
to
Stefan Borst schrieb:

Warum? Lösche doch dort jeweils die Referenz, wo du sie nicht mehr brauchst.
Dann wird das Objekt automatisch nur noch dort referenziert, wo es gebraucht
wird. Und wenn es gebraucht wird, müssen und dürfen auch keine Referenzen
gelöscht werden.

Die Referenzen können ja überall stecken, in lokalen Variablen oder in Feldern.
Sie einfach auf Nothing (Null) zu setzen wäre fatal.


--
Armin

Stefan Borst

unread,
Oct 20, 2009, 3:30:01 AM10/20/09
to
Hallo Armin,

danke erst mal fuer die schnelle Antwort.
Warum ich das ganze brauche:
Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu muss ich
alle (?) Referenzen auf dieses Objekt löschen.
Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche Referenzen
ein Objekt denn noch besitzt.

Mein Problem ist ja genau (wie von dir beschrieben), dass die Referenzen ja
ueberall stecken koennen und ich nicht sicher sein kann, dass ich alle
kenne...

Gibt es nict irgend eine Möglichkeit alle Referenzen auf ein Objekt zu
bekommen?
Wie macht das der GarbageCollector?
Gibt er (der GarbageCollector) sein Wissen preis?

Viele Gruesse,

Stefan

"Armin Zingler" wrote:

> .
>

Armin Zingler

unread,
Oct 20, 2009, 6:51:31 AM10/20/09
to
Stefan Borst schrieb:

> Gibt es nict irgend eine Möglichkeit alle Referenzen auf ein Objekt zu
> bekommen?
> Wie macht das der GarbageCollector?
> Gibt er (der GarbageCollector) sein Wissen preis?

Kann ich dir leider nicht sagen. Habe auch nicht danach gesucht.

--
Armin

Immo Landwerth

unread,
Oct 20, 2009, 5:48:33 PM10/20/09
to
Stefan Borst wrote:

> Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu
> muss ich alle (?) Referenzen auf dieses Objekt löschen.

Ich kenne mich absolut nicht mit ORM Tools aus, aber das klingt genau
wie eines der Probleme, das man mit traditionellen SQL DBs gar nicht
erst hätte :-P

> Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche
> Referenzen ein Objekt denn noch besitzt.

Das geht mit Debuggern/Profilern, ist allerdings meistens nicht
besonders einfach.

--
Immo Landwerth

Udo Nesshoever

unread,
Nov 8, 2009, 12:19:03 PM11/8/09
to

Stefan Borst wrote,

> Ich arbeite mit NHibernate und will dort ein Objekt löschen...dazu muss ich
> alle (?) Referenzen auf dieses Objekt löschen.
> Zumindest will ich (zu Untersuchungszwecken) mal schauen, welche Referenzen
> ein Objekt denn noch besitzt.
>
> Mein Problem ist ja genau (wie von dir beschrieben), dass die Referenzen ja
> ueberall stecken koennen und ich nicht sicher sein kann, dass ich alle
> kenne...

Mal eine ketzerische Frage: warum kennst du nicht alle Referenzen, die
ein Objekt, welches du loeschen willst, hat? Sobald du ein Objekt von
NH hilst, hast du eine Referenz und weisst auch, wo du sie hast.
Wenn du auf Objekte ansprichst, die als Kind-Objekte automatisch durch
NH mit erzeugt/geladen werden, kannst du sie auch niht einfach so
loeschen, wenn du nicht vorher die Referenz von Eltern-Objekt geloest
hast.
Selbst mit LazyLoading sollte das kein Thema sein. Oder hast du irgend
eine Sonderlogik in Gebrauch?

Cheers,
Udo

0 new messages