Sobes.tech
Junior — Middle

Можете ли да објасните сврху интерфејса IDisposable и како га користити у управљању ресурсима?

sobes.tech АИ

Одговор од АИ

Interfejs IDisposable u C# je namenjen za oslobađanje neuređenih resursa, kao što su deskriptori fajlova, veze sa bazama podataka, soketi itd. Sadrži metodu Dispose() koja se poziva za eksplicitno oslobađanje resursa.

Korišćenje IDisposable omogućava kontrolu vremena oslobađanja resursa, što je važno za sprečavanje curenja.

Primer upotrebe:

class ResourceHolder : IDisposable
{
    private bool disposed = false;

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

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Oslobađanje upravljanih resursa
            }
            // Oslobađanje neuređenih resursa
            disposed = true;
        }
    }

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

Takođe se često koristi konstrukcija using, koja automatski poziva Dispose():

using(var resource = new ResourceHolder())
{
    // rad sa resursom
}
// Ovde se automatski poziva Dispose()

Na ovaj način, IDisposable pomaže da se resursi pravilno upravljaju i sprečavaju curenja.