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);
    }
}

Ин модел кӯмак мекунад, ки вақти озод кардани захираҳоро назорат кунед ва аз шикасти ё баста шудани хотира пешгирӣ кунед.