Sobes.tech
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);
    }
}

Бул үлгү ресурстарды бошотуу убактысын көзөмөлдөөгө жардам берет жана эс тутумдун агып кетишин же блоктоолорду алдын алат.