Junior — Middle
Программалоодо Dispose үлгүсү эмне экенин түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Программалоодо Dispose үлгүсү, өзгөчө C#да, башкарылбаган ресурстарды (мисалы, файл дескрипторлору, базаларга байланыштар, сокеттер) туура бошотуу үчүн колдонулат.
C#да бул үчүн IDisposable интерфейсин ишке ашыруу керек, ал Dispose() деген ыкманы камтыйт. Бул ыкманы чакырганда, объект керек болбой калганда ресурстар так жана так бошотулат.
Куллануу мисалы:
class ResourceHolder : IDisposable
{
private bool disposed = false;
private IntPtr unmanagedResource; // мисал үчүн башкарылбаган ресурс
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this); // финализатордун чакырылышын алдын алуу
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Башкарылуучу ресурстарды бошотуу
}
// Башкарылбаган ресурстарды бошотуу
CloseHandle(unmanagedResource);
unmanagedResource = IntPtr.Zero;
disposed = true;
}
}
~ResourceHolder()
{
Dispose(false);
}
}
Бул үлгү ресурстарды бошотуу убактысын көзөмөлдөөгө жардам берет жана эс тутумдун агып кетишин же блоктоолорду алдын алат.