Nib*_*Pig 6 c# garbage-collection
我偶然发现了一些使用该GC.KeepAlive()方法的代码,我试图了解它是如何工作的.例如,在此代码中:
Timer timer = new System.Timers.Timer(5000);
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timer.Enabled = true;
GC.KeepAlive(timer);
Run Code Online (Sandbox Code Playgroud)
在这段代码中,我的理解是创建了一个Timer对象,它产生一个每5秒运行一次的线程.接下来,运行GC线.然后该方法退出,在垃圾收集运行时销毁计时器.
KeepAlive只会在调用KeepAlive之前保持活动状态,它看起来对我来说大概是0.0000001秒并且它不会被破坏,因为它有一个本地引用(除非它正在破坏它,因为没有其他事情发生在计时器对象?)
无论哪种方式,当5000间隔被击中时,该方法将在很久以前结束,并且很可能计时器被破坏.那条线的目的是什么?
| 归档时间: |
|
| 查看次数: |
3169 次 |
| 最近记录: |