Innholdsfortegnelse:
Definisjon - Hva betyr dispose?
I forbindelse med C # er dispose en objektmetode som påberopes for å utføre kode som kreves for minneopprydding og frigjøre og tilbakestille ubehandlede ressurser, for eksempel filhåndteringer og databaseforbindelser. Kast forbedrer ytelsen og optimaliserer minnet ved å frigjøre uhåndterbare objekter og knappe ressurser, som GDI-håndtak (Graphics Device Interface) som brukes i applikasjoner med begrenset Windows-plass.
Dispose-metoden, levert av IDisposable-grensesnittet, implementerer kasseanrop. Dispose-mønsteret er designet for rettidig og forutsigbar opprydding, forebygging av midlertidige minnelekkasjer og disponering av ressurser.
Techopedia forklarer Dispose
.NET-rammeverket letter søppelinnsamling (GC), administrerer objektminne og ressurser og gjenvinner ugyldige referanser til objektminne ved å påberope seg Finalize - en ikke-deterministisk metode. Dispose-metoden styrer levetiden til objektminneforekomster og gir eksplisitt minneoppryddingskontroll, kontra Finalises implisitte minneopprydding. Kast kan påberopes selv når andre minneobjektforekomster eksisterer, mens Finalisering bare kan påberopes etter at det siste minneobjektet er ødelagt.
Avhendingsmetodens regler er som følger:
- Brukes til ustyrte ressurser som krever øyeblikkelig frigjøring etter bruk.
- Hvis Avhending ikke kalles, bør Finalize-metoden implementeres.
- Etter å ha kalt Dispose-metoden, må GC.SuppressFinalize-metoden kalles for å avverge Finalize-metoden og unngå unødvendig GC.
- Unntak bør håndteres nøye hvis avhendingsmetoden påberopes mer enn én gang. Hvis ressurser disponeres, kan en hvilken som helst forekomstmetode kaste ObjectDisposedException.
- Et objekt med en tidligere kalt avhendingsmetode kan ikke brukes på nytt.
- Avhending anbefales kun for håndtering av naturlige ressursobjekter og COM-objekter (Component Object Model) eksponert for .NET Framework.
- Kast kan ikke påberopes samtidig fra flere tråder på grunn av uforutsigbare resultater.
- Verdityper skal ikke opprettes som engangstyper eller med ikke-administrerte ressursmedlemmer.
- Når du bruker ikke-administrerte ressurser, anses det som beste praksis å anvende kildekodens Bruk-setning, som automatisk påkaller objektets disposisjonsmetode etter å ha fullført objektkoden.
