Junior — Middle
Használta nem kezelhető erőforrásokat C#-ban történő fejlesztés során?
sobes.tech MI
Válasz az MI-től
Igen, C#-ban, amikor nem kezelt erőforrásokkal dolgozik, például fájldeskriptorokkal, adatbázis-kapcsolatokkal vagy memória mutatókkal, fontos ezeket az erőforrásokat helyesen felszabadítani, hogy elkerüljük a memória szivárgásokat és más problémákat. Ehhez általában az IDisposable interfészt és a Dispose() metódust implementálják, ahol a nem kezelt erőforrásokat felszabadítják.
Példa:
class UnmanagedResourceHolder : IDisposable
{
private IntPtr unmanagedPointer; // nem kezelt erőforrás
private bool disposed = false;
public UnmanagedResourceHolder()
{
// nem kezelt erőforrás lefoglalása
unmanagedPointer = /* API hívás */ IntPtr.Zero;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (unmanagedPointer != IntPtr.Zero)
{
// nem kezelt erőforrás felszabadítása
// például natív API hívás
unmanagedPointer = IntPtr.Zero;
}
disposed = true;
}
}
~UnmanagedResourceHolder()
{
Dispose(false);
}
}
Így a nem kezelt erőforrások felszabadítása kézi ellenőrzés alatt áll, ami megakadályozza a szivárgásokat.