Hat

Definition - Was bedeutet Entsorgen?

Im Kontext von C # ist dispose eine Objektmethode, die aufgerufen wird, um Code auszuführen, der für die Speicherbereinigung und -freigabe erforderlich ist, und nicht verwaltete Ressourcen wie Dateihandles und Datenbankverbindungen zurückzusetzen. Dispose verbessert die Leistung und optimiert den Speicher, indem nicht verwaltbare Objekte und knappe Ressourcen freigegeben werden, z. B. GDI-Handles (Graphics Device Interface), die in Anwendungen mit eingeschränktem Windows-Speicherplatz verwendet werden.

Die von der IDisposable-Schnittstelle bereitgestellte Dispose-Methode implementiert Dispose-Aufrufe. Das Entsorgungsmuster wurde für eine zeitnahe und vorhersehbare Bereinigung, die Verhinderung vorübergehender Speicherlecks und die Entsorgung von Ressourcen entwickelt.

Technische.me erklärt Dispose

Das .NET Framework erleichtert die Speicherbereinigung (Garbage Collection, GC), verwaltet den Objektspeicher und die Ressourcen und fordert ungültige Objektspeicherreferenzen zurück, indem Finalize aufgerufen wird - eine nicht deterministische Methode. Die Dispose-Methode steuert die Lebensdauer von Objektspeicherinstanzen und bietet eine explizite Steuerung der Speicherbereinigung im Vergleich zur impliziten Speicherbereinigung von Finalize. Dispose kann auch dann aufgerufen werden, wenn andere Speicherobjektinstanzen vorhanden sind, während Finalize möglicherweise erst aufgerufen wird, nachdem das letzte Speicherobjekt zerstört wurde.

Die Regeln für die Entsorgungsmethode lauten wie folgt:

  • Wird für nicht verwaltete Ressourcen verwendet, die nach der Verwendung sofort freigegeben werden müssen.
  • Wenn Dispose nicht aufgerufen wird, sollte die Finalize-Methode implementiert werden.
  • Nach dem Aufrufen der Dispose-Methode muss die GC.SuppressFinalize-Methode aufgerufen werden, um die Finalize-Methode abzuwenden und unnötige GC zu vermeiden.
  • Ausnahmen sollten sorgfältig behandelt werden, wenn die Dispose-Methode mehrmals aufgerufen wird. Wenn Ressourcen verfügbar sind, kann jede Instanzmethode die ObjectDisposedException auslösen.
  • Ein Objekt mit einer zuvor aufgerufenen Dispose-Methode kann möglicherweise nicht wiederverwendet werden.
  • Dispose wird nur für die Verwaltung von nativen Ressourcenobjekten und COM-Objekten (Component Object Model) empfohlen, die für .NET Framework verfügbar gemacht werden.
  • Dispose kann aufgrund unvorhersehbarer Ergebnisse möglicherweise nicht gleichzeitig von mehreren Threads aufgerufen werden.
  • Werttypen sollten nicht als Einwegarten oder mit nicht verwalteten Ressourcenmitgliedern erstellt werden.
  • Bei Verwendung nicht verwalteter Ressourcen wird empfohlen, die Using-Anweisung des Quellcodes anzuwenden, die nach Abschluss des Objektcodes automatisch die Dispose-Methode des Objekts aufruft.

Diese Definition wurde im Kontext von C # geschrieben