Pensé que el GC llamaría a Dispose eventualmente si su programa no lo hizo pero que debe llamar a Dispose() en su programa solo para hacer la limpieza determinista.¿El recolector de basura llama a Dispose()?
Sin embargo, desde mi programa de pruebas poco, no veo Deseche recibiendo llamadas en absoluto ....
public class Test : IDisposable
{
static void Main(string[] args)
{
Test s = new Test();
s = null;
GC.Collect();
Console.ReadLine();
}
public Test()
{
Console.WriteLine("Constructor");
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
// La salida es simplemente "Constructor", no lo entiendo "Desechar" como yo esperaría ¿Que pasa?
EDIT: Sí, sé que debo llamar a Dispose(): sigo el patrón estándar cuando uso objetos desechables. Mi pregunta surge porque estoy tratando de rastrear una fuga en el código de alguien más, que es C++ administrado (otra capa de complejidad que sería el buen tema de otro hilo).
Esta pregunta es un duplicado de [http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-disponible-disponer-para -me] (http://stackoverflow.com/questions/45036/will-the-garbage-collector-call-disposable-dispose-for-me). –