Sobes.tech
Junior — Middle

Proqramlaşdırmada Dispose nümunəsinin nə olduğunu izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Proqramlaşdırmada Dispose nümunəsi, xüsusən C#-da, idarə olunmayan resursların (məsələn, fayl deskriptorları, verilənlər bazası əlaqələri, soketlər) düzgün şəkildə azad olunması üçün istifadə olunur.

C#-da bunun üçün IDisposable interfeysi tətbiq edilir və içində Dispose() metodu yerləşir. Bu metod çağırıldıqda, obyekt artıq lazım olmadıqda resursları açıq şəkildə azad edir.

İstifadə nümunəsi:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    private IntPtr unmanagedResource; // idarə olunmayan resurs nümunəsi

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this); // finalizer çağırışını qarşısını alır
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // İdarə olunan resursları azad et
            }
            // İdarə olunmayan resursları azad et
            CloseHandle(unmanagedResource);
            unmanagedResource = IntPtr.Zero;
            disposed = true;
        }
    }

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

Bu nümunə, resursların azad olunma vaxtını idarə etməyə və yaddaş sızıntılarını və ya kilidlənmələri qarşısını almağa kömək edir.