如何在c#中保持本地对象不被GC?

时间:2012-02-13 10:11:56

标签: garbage-collection

我有这个方法:

private static void StartLicensePlateMonitor(Autofac.IContainer container)
    {

        var monitor = container.Resolve<LicensePlate.LicensePlateUploadMonitor>();
        monitor.Start();

        System.GC.KeepAlive(monitor); //does this work?

    }

我想让监视器一直处于活动状态,直到程序关闭,语句“System.GC.KeepAlive(monitor);”工作?

1 个答案:

答案 0 :(得分:2)

没有。 System.GC.KeepAlive()的文档说明它确保参数直到调用KeepAlive() 。它只是一个虚拟函数,GC承诺不会检查参数的实际用途。

如果您希望对象保持活动状态,请确保始终存在对象的引用。将其存储在private static字段中应该足够了。如果您有任意数量,则将其存储在字段中的List