Рассмотрим следующий код:
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();
}
}
Если я не ошибаюсь, после того, как переменная tmr
выйдет из области видимости, на Timer
нигде не будет ссылаться, поэтому она должна подходить для сборки мусора. Но когда я нажимаю кнопку GC, таймер продолжает работать, поэтому я думаю, что он не был собран ...
У кого-нибудь есть объяснение этому?
PS: конечно, это не настоящая программа, я просто пытался доказать кому-то свою точку зрения ... но мое доказательство не сработало;)