Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie genau funktioniert IDispoable?
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

Wie genau funktioniert IDispoable?

beantworten | zitieren | melden

Hallo,

Ich benutze .NET 2.0 und leite meine Klasse von IDispoable ab und implentiere
auch die einzige Interface Funktion Dispose.

So wie ich das verstanden habe dient Dispose als eine Art Destruktor Event und
wird irgendwann beim Abräumen meines Objekts aufgerufen.
Passieren tut bei mir leider garnichts.

Habe ich da irgendwas falsch verstanden ?

Gruss
Sebastian
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

ja. idisposable implementiert man nur dann, wenn man manuell aufräumen muss und das muss man auch noch selbst aufrufen. entweder Using(...) ruft es auf oder du selbst mit .Dispose

destruktor gibt es auch


~klassenname()
{
}

jedoch ist nicht gewährleistet wann er aufgerufen wird und ob noch die objekte die er evtl noch benötigt nicht bereits abgeräumt sind.
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Selber aufrufen sucks ;( Die Forms implementieren Dispose immer über ein override und da ist sichergestellt das die Membervariablen noch da sind beim Aufruf.

Ich kann meine Klasse von Forms ableiten und dann override überschreiben
und der Witz ist das klappt ganz vorzüglich, erscheint mir nur etwas merkwürdig...
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

naja was denkst du machst du falsch?

eine klasse von forms abzuleiten nur um disposable "automatisch" aufgerufen zu bekommen ist... grauenhaft blauäugig.
wie wäre es den nwenn du im destruktor dispose aufrufst? wenn du keine abhängigkeiten zu objekten hast, die du nciht direkt referenzierst dann ist das schon möglich, wobei ich die anzahl von klassen, die einen destruktor haben kleinhalten würde da das erstellen solch einer klasse in etwa 5 mal so lange dauert und das abräumen geschieht erst beim 2. durchlauf des gc.

ansonsten ist und bleibt das handling mit idisposable das gleiche und das korrekte. du kannst natürlcih auch weiterhin alle deine klassen von form ableiten.. ob sinn oder eher unsinn soll dann der kunde entscheiden.
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

eine klasse von forms abzuleiten nur um disposable "automatisch" aufgerufen zu bekommen ist... grauenhaft blauäugig.

ich bin nicht deiner meinung.
wenn das die ausnahme bleibt kann man das schon mal machen. einzelfallentscheidung.

im destruktor habe ich keine garantie darauf das die membervariablen meiner klasse noch nicht abgeräumt sind, die ich hier noch brauche. (da nützt es mir auch nix von da aus Dispose aufzurufen) zumindest war das in .NET 1.1 damals so.
wenn sich da inzwischen was geändert hat weiss ich davon nix.
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

was denkst du macht eine form anders?
Zitat
ich bin nicht deiner meinung.
wenn das die ausnahme bleibt kann man das schon mal machen. einzelfallentscheidung.

da bin ich und vermutlich die gesamte programmiererwelt anderer meinung.
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Sebastian.Lange,

siehe Dispose implementieren und verwenden

herbivore
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Fesch! Danke

Vermutlich auch im Namen der "gesamten Programmiererwelt"

Nein ich bin nicht anmaßend.
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Zitat
Nein ich bin nicht anmaßend.

aber ich. wenn man gegen grundlegene richtlinien verstößt und eklatante fehler bewusst implementiert, dann kann ich das sehr wohl behaupten.
egrath
myCSharp.de - Member

Avatar #avatar-2119.jpg


Dabei seit:
Beiträge: 937
Herkunft: Österreich / Steyr

beantworten | zitieren | melden

Hallo,

weils gut dazu passt.

Grüsse,
Egon
Attachments
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Danke egrath !

trotzdem nervt mich die garbage collection, meinen müll zu hause bring ich auch alleine runter. :evil:
private Nachricht | Beiträge des Benutzers
Gelöschter Benutzer

beantworten | zitieren | melden

Dispose bringt den müll runter und der garbagecollector (also die müllabfuhr) bringt ihn dann in die verbrennungsanlage.

edit: außerdem widersprichst du dir:
Zitat
Selber aufrufen sucks
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal am .
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

Zitat von Sebastian.Lange
trotzdem nervt mich die garbage collection

Wie paßt das zu
Zitat
Selber aufrufen sucks

?
private Nachricht | Beiträge des Benutzers
JunkyXL
myCSharp.de - Experte

Avatar #avatar-3234.gif


Dabei seit:
Beiträge: 1732
Herkunft: Ein paar Bytes südlich von string

beantworten | zitieren | melden

Hier wird teilweise mehr Müll geschrieben, als der GC normal wegzuräumen hat..
private Nachricht | Beiträge des Benutzers
egrath
myCSharp.de - Member

Avatar #avatar-2119.jpg


Dabei seit:
Beiträge: 937
Herkunft: Österreich / Steyr

beantworten | zitieren | melden

Zitat von Sebastian.Lange
Danke egrath !

trotzdem nervt mich die garbage collection, meinen müll zu hause bring ich auch alleine runter. :evil:

Hallo,

wenn dich ger GC nervt bist Du bei Managed Sprachen eher fehl am Platz.

Grüsse,
Egon
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von egrath am .
private Nachricht | Beiträge des Benutzers