Betrachten Sie den folgenden Code ein:Timer, Event und Garbage Collection: Fehle ich etwas?
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();
}
}
Wenn mich nicht alles täuscht, nachdem die tmr
Variable den Gültigkeitsbereich verlässt, wird die Timer
nicht überall referenziert, so dass es für die Garbage Collection in Betracht kommen sollten. Aber wenn ich auf den GC-Knopf klicke, läuft der Timer weiter, also denke ich, dass er nicht gesammelt wurde ...
Hat jemand eine Erklärung dafür?
PS: es ist kein richtiges Programm natürlich, ich war nur noch einen Punkt zu jemandem versuchen zu beweisen, ... aber mein Beweis funktioniert nicht;)
Ich nehme an, dass dies ein WinForms-Timer ist. – SLaks
ja ist es, ich habe den Code aktualisiert, um das klar zu machen –