Съдържание:
Определение - Какво означава обезвреждане?
В контекста на C #, dispose е метод на обекта, за да се изпълни код, необходим за почистване на паметта и освобождаване и нулиране на неуправляеми ресурси, като дръжки на файлове и връзки към базата данни. Dispose подобрява производителността и оптимизира паметта, като освобождава неуправляеми обекти и оскъдни ресурси, като дръжки Graphics Device Interface (GDI), използвани в приложения с ограничено пространство на Windows.
Методът Dispose, предоставен от IDisposable интерфейса, осъществява разпореждане с повиквания. Моделът на изхвърляне е предназначен за навременно и предвидимо почистване, предотвратяване на временни течове на паметта и изхвърляне на ресурси.
Техопедия обяснява разпореждане
Рамката .NET улеснява събирането на боклука (GC), управлява паметта на обектите и ресурсите и възстановява невалидни препратки към паметта на обекта чрез извикване на Finalize - недетерминиран метод. Методът Dispose контролира живота на случаите на обектната памет и осигурява изричен контрол на почистването на паметта срещу неявното почистване на паметта на Finalize. Dispose може да бъде извикан дори когато съществуват други екземпляри на обект на памет, докато Finalize може да бъде извикан само след като последният обект на памет е унищожен.
Правилата за изхвърляне са следните:
- Използва се за неуправляеми ресурси, изискващи незабавно освобождаване след употреба.
- Ако Dispose не се извиква, методът на Finalize трябва да бъде приложен.
- След извикване на метода Dispose, трябва да се извика методът GC.SuppressFinalize, за да се избегне методът Finalize и да се избегне ненужното GC.
- Изключенията трябва да бъдат внимателно обработвани, ако методът на разпореждане се използва повече от веднъж. Ако ресурсите са разположени, всеки метод на инстанция може да хвърли ObjectDisposedException.
- Обект с предварително наречен метод за разпореждане може да не се използва повторно.
- Изхвърлянето се препоръчва само за управление на обекти с естествен ресурс и на компонентния обект модел (COM), изложени на .NET Framework.
- Изхвърлянето може да не се използва едновременно от множество нишки поради непредвидими резултати.
- Типовете стойности не трябва да се създават като видове за еднократна употреба или с неуправляеми членове на ресурса.
- Когато използвате неуправляеми ресурси, счита се за най-добра практика прилагането на изходния код Use statement, който автоматично извиква метода на разположение на обекта след завършване на обектния код.
