ExpertiDict

C# · Avançado · Inglês · Técnico

SafeHandle

/seɪf ˈhændəl/substantivo

Classe base abstrata que encapsula um handle de recurso nativo com contagem de referência e liberação confiável via ReleaseHandle, mesmo diante de exceções e finalização.

Onde usar

Aparece em interop e P/Invoke, onde um IntPtr cru vazaria o recurso se esquecido. Funções importadas podem devolver SafeHandle em vez de IntPtr, e o finalizador crítico garante o fechamento.

Em código

using Microsoft.Win32.SafeHandles;

class Meu : SafeHandleZeroOrMinusOneIsInvalid
{
  public Meu() : base(true) { }
  protected override bool ReleaseHandle()
    => true; // aqui fecharia o handle nativo
}

Exemplos

Wrap the native handle in a SafeHandle.

Envolva o handle nativo em um SafeHandle.

A SafeHandle guarantees the handle gets released.

Um SafeHandle garante que o handle seja liberado.

Cuidado

Não guarde handles nativos em IntPtr dentro de classes com finalizador manual: ficam sujeitos a corridas e vazamentos que o SafeHandle evita.

Antônimos

IntPtr

Veja também

Todos os termos de C#