Veröffentlicht 17. März 200520 j 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
17. März 200520 j 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.
17. März 200520 j 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
17. März 200520 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.