防止对象被垃圾收集

Prevent object from getting garbage collected

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

    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 是否有可能在滴答前收集垃圾?

不,GC 不会收集 TaskTimerObject。

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