Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[C#] How to use Dispose() ?

Empfohlene Antworten

Veröffentlicht

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

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.

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 :)

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

danke euch

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.