Obsah:
Definice - Co znamená Dispose?
V kontextu C # je dispose metoda objektu vyvolána ke spuštění kódu vyžadovaného pro vyčištění a uvolnění paměti a resetování nespravovaných prostředků, jako jsou popisovače souborů a připojení k databázi. Dispose zlepšuje výkon a optimalizuje paměť uvolňováním nezvládnutelných objektů a omezených zdrojů, jako jsou úchyty Graphics Device Interface (GDI) používané v aplikacích s omezeným prostorem Windows.
Metoda Dispose poskytovaná rozhraním IDisposable implementuje Dispose calls. Vzor Dispose je navržen pro včasné a předvídatelné vyčištění, prevenci dočasných úniků paměti a likvidaci zdrojů.
Techopedia vysvětluje Dispose
Framework .NET usnadňuje sběr odpadků (GC), spravuje paměť objektů a prostředky a získává neplatné odkazy na paměť objektů vyvoláním Finalize - nedeterministická metoda. Metoda Dispose řídí životnost instancí paměti objektů a poskytuje explicitní řízení čištění paměti versus implicitní čištění paměti Finalize. Dispose může být vyvoláno, i když existují jiné instance objektu paměti, zatímco Finalizace může být vyvolána až po zničení posledního objektu paměti.
Pravidla metody likvidace jsou následující:
- Používá se pro nespravované prostředky vyžadující okamžité uvolnění po použití.
- Pokud není zavolána funkce Dispose, měla by být implementována metoda Finalize.
- Po vyvolání metody Dispose musí být volána metoda GC.SuppressFinalize, aby se odvrátila metoda Finalize a zabránilo se zbytečné GC.
- Výjimky by měly být pečlivě zpracovány, pokud je metoda Dispose vyvolána vícekrát. Pokud jsou prostředky zlikvidovány, může jakákoli metoda instance vyvolat ObjectDisposedException.
- Objekt s dříve nazvanou metodou Dispose nelze znovu použít.
- Dispose se doporučuje pouze pro správu objektů nativních prostředků a objektů COM (Component Object Model) vystavených rozhraní .NET Framework.
- Likvidace nemusí být vyvolána souběžně z více vláken, a to z důvodu nepředvídatelných výsledků.
- Typy hodnot by neměly být vytvářeny jako jednorázové typy nebo s nespravovanými členy prostředků.
- Při použití nespravovaných prostředků se považuje za nejlepší postup použít příkaz Použití zdrojového kódu, který po dokončení kódu objektu automaticky vyvolá metodu Dispose.