Мой вопрос прост: почему GC не может понять, что объект timer
в main
должен быть собран вместе с сборщиком мусора ] timer
внутри TestTimer
и связанный с ним EventHandler
?
Почему я постоянно получаю вывод console.Writeline
?
class Program
{
public static void Main()
{
TestTimer timer = new TestTimer();
timer = null;
GC.Collect();
GC.WaitForPendingFinalizers();
Console.ReadKey();
}
}
public class TestTimer
{
private Timer timer;
public TestTimer()
{
timer = new Timer(1000);
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
private void timer_Elapsed(Object sender, ElapsedEventArgs args)
{
Console.Write("\n" + DateTime.Now);
}
}