防止对象收集垃圾

时间:2015-03-13 10:10:39

标签: c# garbage-collection

在控制台应用程序中,我有以下代码:

    private static System.Timers.Timer TaskTimer;
    static void Main(string[] args)
    {
        //run each minute
        Func<double> getNextMinute = () => { return (DateTime.Now.RoundUp(TimeSpan.FromMinutes(1)) - DateTime.Now).TotalMilliseconds; };
        TaskTimer = new System.Timers.Timer(getNextMinute());
        TaskTimer.AutoReset = false;
        TaskTimer.Elapsed += (sender, e) =>
        {
            TaskTimer.Interval = getNextMinute();
            TaskTimerCallback();
        };
        TaskTimer.Start();

        bool exit = false;
        while (!exit)
        {
            exit = (command == "exit");
        }
    }

如果我检查定时器GC生成,它总是为0。

在滴答之前,TaskTimerObject是否有可能收集垃圾?

1 个答案:

答案 0 :(得分:0)

不,GC不会收集TaskTimerObject。

字段TaskTimer是一个Root Referance,它指向TaskTimerObject。