Determinar los recursos administrados frente a los no administrados
Hay muchas preguntas sobre los recursos administrados y no administrados. Entiendo la definición básica de los dos. Sin embargo, me cuesta mucho saber cuándo se administra o no un recurso u objeto.
Cuando pienso en recursos no administrados, tiendo a pensar en un código nativo que no forma parte directamente de .NET, como los recursos pinvoke o de cálculo de referencias. Normalmente pensaría en recursos destinados a interactuar con algo que usará HW, como un identificador de archivo o una conexión de red que no esté administrada.
¿Qué pasa con los objetos .NET que envuelven recursos no administrados nativos, como unFileStream
.
A FileStream
Debo usar recursos no administrados, pero cuando implemento elIDisposable
patrón, ¿debería considerar esto como un recurso administrado o no administrado?
He estado asumiendo hasta ahora que si el objeto implementaIDisposable
, entonces se gestiona. Como sabria esoIntPtr
¿Debe manejarse como un resoruce no gestionado?