OnkelkNarF Geschrieben 17. März 2005 Teilen Geschrieben 17. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 17. März 2005 Teilen Geschrieben 17. März 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
arrayhunter Geschrieben 17. März 2005 Teilen Geschrieben 17. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HuDeanY Geschrieben 17. März 2005 Teilen Geschrieben 17. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
OnkelkNarF Geschrieben 17. März 2005 Autor Teilen Geschrieben 17. März 2005 danke euch Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.