Zum Inhalt springen

[C#] How to use Dispose() ?


OnkelkNarF

Empfohlene Beiträge

Hallo,

ich bin gerade dabei eine Webanwendung mit C# zu entwicklen.

Dabei habe ich ein DBConnection Objekt, welches die Verbindung verarbeitet

Nachdem ich die Datenbankverbindung schließe, möchte ich den vom Objeklt belegten Speicher gerne wieder frei geben.

Habe jetzt ziemlich viel über die Dispose() Methode gefunden werde daraus aber nicht wirklich schlau...

Muss man das damit machen? Wenn ja könnte mir jemand erklären wie?

Oder gibt es auch noch eine andere Möglichkeit, den Speicher wieder frei zu geben (und nicht unbedingt über GC.Clean(), das ist zu Performance lastig)

danke schonmal

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dispose soll nicht verwaltere Resourcen freigeben, also z.B. Systemobjekte, die nicht von der CLR verwaltet werden sollen.

Wenn Du folglich die Verbindung nicht mehr nutzen willtst, kannst Du Dispose aufrufen. Alternativ könntest Du in C# die

using(...){...} Schreibweise verwenden, bei der am Ende des Blockes aufomatisch Dispose aufgerufen wird.

Link zu diesem Kommentar
Auf anderen Seiten teilen

du solltest dir allerdings überlegen, ob du die SQLConn mit Dispose() beendest und aus dem Speicher entfernst

schliesslich landet deine Conn bei einem Close() in dem ConnectionPool,

der ZUgriff nach einem Close ist natürlich schneller, da hier die Conn auf "Vorrat" gehalten wird... und nicht immer neu geöffnet werden muss

gerade deine Webanwendung wird es dir danken :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Grundsätzlich (berichtigt mich aber wenn ich was falsches verzapfe ;-) ) hat C# eine Garbage Collection ähnlich wie in JAVA

Soll heissen alle Objekte die du nicht mehr referenzierst (also ausser über feste Pointer auch nicht mehr erreichen kannst) werden beim Durchlauf dieser gelöscht und deren Speicher wieder freigegeben. Dummerweise läuft dies zu Systemgesteuerten Zeitpunkten ab ... was aber an sich kein Problem sein sollte.

Solange du also "managed" Code benutzt mach dir mal keine Gedanken um Dipose das läuft von selber (meist besser als dus selber könntest)

Einzig wenn du "unmanaged" Code nutzt wie zum Beispiel beim einbinden von externen COM Objekten und ähnlichem brauchst du die funktion dipose ... wie du die dann nutzt hängt aber von dem Objekt selber ab und wird auch in MSDN beschrieben

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...