我有这个方法:
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);”工作?
答案 0 :(得分:2)
没有。 System.GC.KeepAlive()
的文档说明它确保参数直到调用KeepAlive()
。它只是一个虚拟函数,GC承诺不会检查参数的实际用途。
如果您希望对象保持活动状态,请确保始终存在对象的引用。将其存储在private static
字段中应该足够了。如果您有任意数量,则将其存储在字段中的List
。