Junior — Middle
C# программалоодо башкарылбаган ресурстарды колдондуңбу?
sobes.tech AI
AIден жооп
Ооба, C#да башкарылбаган ресурстар менен иштөөдө, мисалы, файл дескрипторлору, базаларга байланыштар же эс тутум көрсөткүчтөрү сыяктуу, бул ресурстарды туура бошотуу маанилүү; бул эс тутум агып кетүүлөрүн жана башка көйгөйлөрдү алдын алат. Анын үчүн адатта IDisposable интерфейсин жана Dispose() методун ишке ашырат, анда башкарылбаган ресурстар бошотулат.
Мисал:
class UnmanagedResourceHolder : IDisposable
{
private IntPtr unmanagedPointer; // башкарылбаган ресурс
private bool disposed = false;
public UnmanagedResourceHolder()
{
// башкарылбаган ресурсту бөлүштүрүү
unmanagedPointer = /* API чакыруу */ IntPtr.Zero;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (unmanagedPointer != IntPtr.Zero)
{
// башкарылбаган ресурсты бошотуу
// мисалы, native API чакыруу
unmanagedPointer = IntPtr.Zero;
}
disposed = true;
}
}
~UnmanagedResourceHolder()
{
Dispose(false);
}
}
Ушул жол менен, башкарылбаган ресурстарды бошотуу кол менен көзөмөлдөнөт, бул агып кетүүлөрдү алдын алат.