Почему GC не может это понять?

Мой вопрос прост: почему 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);
    }
}
6
задан Jalal Said 23 July 2011 в 10:44
поделиться