Inhoudsopgave:
Definitie - Wat betekent Dispose?
In de context van C # is dispose een objectmethode die wordt aangeroepen om code uit te voeren die nodig is voor het opschonen van geheugen en het vrijgeven en opnieuw instellen van onbeheerde bronnen, zoals bestandshandvatten en databaseverbindingen. Dispose verbetert de prestaties en optimaliseert het geheugen door onhandelbare objecten en schaarse bronnen vrij te geven, zoals Graphics Device Interface (GDI) -handgrepen die worden gebruikt in toepassingen met beperkte Windows-ruimte.
De Dispose-methode, aangeboden door de IDisposable-interface, implementeert Dispose-oproepen. Het Dispose-patroon is ontworpen voor tijdige en voorspelbare opschoning, preventie van tijdelijke geheugenlekken en verwijdering van bronnen.
Techopedia legt Dispose uit
Het .NET-framework vergemakkelijkt garbage collection (GC), beheert objectgeheugen en bronnen en claimt ongeldige objectgeheugenreferenties door Finalize aan te roepen - een niet-deterministische methode. De methode Dispose regelt de levensduur van objectgeheugeninstanties en biedt expliciete controle voor het opschonen van het geheugen, versus de impliciete opschoning van Finalize. Dispose kan worden aangeroepen, zelfs als er andere exemplaren van geheugenobjecten bestaan, terwijl Finalize alleen kan worden aangeroepen nadat het laatste geheugenobject is vernietigd.
De methode-regels zijn als volgt:
- Wordt gebruikt voor onbeheerde bronnen die na gebruik onmiddellijk moeten worden vrijgegeven.
- Als Dispose niet wordt aangeroepen, moet de methode Finaliseren worden geïmplementeerd.
- Nadat de methode Dispose is aangeroepen, moet de methode GC.SuppressFinalize worden aangeroepen om de methode Finalize af te wenden en onnodige GC te voorkomen.
- Uitzonderingen moeten zorgvuldig worden behandeld als de Dispose-methode meer dan eens wordt aangeroepen. Als bronnen worden verwijderd, kan elke instantiemethode de ObjectDisposedException genereren.
- Een object met de eerder genoemde methode Dispose mag niet opnieuw worden gebruikt.
- Verwijderen wordt alleen aanbevolen voor het beheer van native resource-objecten en COM-objecten (Component Object Model) die zijn blootgesteld aan .NET Framework.
- Dispose kan niet gelijktijdig worden aangeroepen vanuit meerdere threads vanwege onvoorspelbare resultaten.
- Waardetypes mogen niet worden gemaakt als wegwerptypes of met onbeheerde resource-leden.
- Wanneer u onbeheerde bronnen gebruikt, wordt het als beste praktijk beschouwd om de instructie Gebruik van de broncode toe te passen, die automatisch de methode Verwijderen van het object oproept na het voltooien van de objectcode.




