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);
}
}
Ин модел кӯмак мекунад, ки вақти озод кардани захираҳоро назорат кунед ва аз шикасти ё баста шудани хотира пешгирӣ кунед.