Tengo un Winform blanco con un método destructor¿Por qué mi destructor nunca se ejecuta?
public partial class Form1 : Form
{
public Form1()
{
System.Diagnostics.Trace.WriteLine("Form1.Initialize " + this.GetHashCode().ToString());
InitializeComponent();
}
~Form1()
{
System.Diagnostics.Trace.WriteLine("Form1.Dispose " + this.GetHashCode().ToString());
}
}
Cuando el formulario se destruye, quiero que pueda escribir en la ventana de salida:
(Form1 opened) Form1.Initialize 41149443 (Form1 closed) Form1.Dispose 41149443
MSDN sugiere 3 maneras en destructor de aplicación:
~ Destructor() http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx
IDisposable http://msdn.microsoft.com/en-us/library/system.idisposable.aspx
patrón SafeHandle http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.safehandle.aspx
Sin embargo, ninguna de estas formas de escribir "Form1.Dispose 41149443" a la ventana de salida. Por lo tanto, no puedo decir si el formulario se ha destruido o no. Sugerencias?
¿Debo renunciar a la esperanza de lograr esto debido a la incertidumbre del recolector de basura?
¿Hay otra manera de saber si Form1 ha sido recogido de basura?
¿Por qué? ¿Que estás tratando de hacer? – SLaks
No puede suponer que se va a llamar al destructor. (Por ejemplo, si tiene suficiente memoria, es perfectamente válido nunca llamar a ningún destructor, nunca). – katrielalex
¿No está escrito el rastro? –