Sobes.tech
Junior — Middle

Dasturlashda Dispose naqshasi nima ekanligini tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Dasturiy ta'minotda Dispose naqshasi, ayniqsa C# da, boshqarilmaydigan resurslarni (masalan, fayl deskriptorlari, ma'lumotlar bazasi ulanishlari, soketlar) to'g'ri bo'shatish uchun ishlatiladi.

C# da bu uchun IDisposable interfeysini amalga oshiriladi va unda Dispose() metodi mavjud. Bu metod chaqirilganda, ob'ekt endi kerak bo'lmaganda resurslarni aniq bo'shatadi.

Foydalanish misoli:

class ResourceHolder : IDisposable
{
    private bool disposed = false;
    private IntPtr unmanagedResource; // boshqarilmaydigan resurs misoli

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this); // finalizator chaqirilishini oldini oladi
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Boshqariladigan resurslarni bo'shatish
            }
            // Boshqarilmaydigan resurslarni bo'shatish
            CloseHandle(unmanagedResource);
            unmanagedResource = IntPtr.Zero;
            disposed = true;
        }
    }

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

Shu tarzda, Dispose naqshasi resurslarni bo'shatish vaqtini nazorat qilishga yordam beradi va xotira oqib ketishlari yoki blokirovkalarni oldini oladi.