假设我动态创建一个这样的计时器:
System.Timers.Timer expirationTimer = new Timer(expiration * 60000);
expirationTimer.Elapsed += (sender, e) => removeExpiredCacheEntry(sessionID);
expirationTimer.Start();
当该引用超出范围时,Timer 对象是否会被垃圾收集?如果是这样,该活动还会火吗?如果不是,那么在这种情况下我该如何避免内存泄漏?
Thanks!
根据这个答案 https://stackoverflow.com/a/298276/134761,计时器对象确实有资格进行垃圾收集,并在某个时刻停止触发事件。
然而,垃圾收集却反过来被阻止。如果我们有
publisher.SomeEvent += target.SomeHandler;
那么“发布者”将使“目标”保持活动状态,但“目标”不会使“发布者”保持活动状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)