Considere el siguiente código:Contador de tiempo, evento y recolección de basura: ¿me falta algo?
class TestTimerGC : Form
{
public TestTimerGC()
{
Button btnGC = new Button();
btnGC.Text = "GC";
btnGC.Click += (sender, e) => GC.Collect();
this.Controls.Add(btnGC);
System.Windows.Forms.Timer tmr = new System.Windows.Forms.Timer();
tmr.Interval = 1000;
tmr.Tick += (sender, e) => this.Text = DateTime.Now.ToString();
tmr.Start();
}
}
Si no me equivoco, después de la variable tmr
sale del ámbito, la Timer
no hace referencia a ninguna parte, por lo que debe ser elegible para la recolección de basura. Pero cuando hago clic en el botón GC, el temporizador continúa funcionando, así que supongo que no se recopiló ...
¿Alguien tiene una explicación para eso?
PS: no es un verdadero programa, por supuesto, yo sólo estaba tratando de demostrar un punto a alguien ... pero mi prueba no funcionó;)
Supongo que este es un temporizador de WinForms. – SLaks
sí lo es, actualicé el código para dejarlo claro –