Sobes.tech
Junior — Middle

C# программалоодо башкарылбаган ресурстарды колдондуңбу?

sobes.tech AI

AIден жооп

Ооба, C#да башкарылбаган ресурстар менен иштөөдө, мисалы, файл дескрипторлору, базаларга байланыштар же эс тутум көрсөткүчтөрү сыяктуу, бул ресурстарды туура бошотуу маанилүү; бул эс тутум агып кетүүлөрүн жана башка көйгөйлөрдү алдын алат. Анын үчүн адатта IDisposable интерфейсин жана Dispose() методун ишке ашырат, анда башкарылбаган ресурстар бошотулат.

Мисал:

class UnmanagedResourceHolder : IDisposable
{
    private IntPtr unmanagedPointer; // башкарылбаган ресурс
    private bool disposed = false;

    public UnmanagedResourceHolder()
    {
        // башкарылбаган ресурсту бөлүштүрүү
        unmanagedPointer = /* API чакыруу */ IntPtr.Zero;
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (unmanagedPointer != IntPtr.Zero)
            {
                // башкарылбаган ресурсты бошотуу
                // мисалы, native API чакыруу
                unmanagedPointer = IntPtr.Zero;
            }
            disposed = true;
        }
    }

    ~UnmanagedResourceHolder()
    {
        Dispose(false);
    }
}

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