c# – 为什么GC无法弄清楚?
发布时间:2020-12-15 18:31:17 所属栏目:百科 来源:网络整理
导读:我的问题很简单,为什么GC无法弄清楚主要的计时器对象应该与TestTimer和相关的EventHandler中的计时器一起被垃圾收集? 为什么我不断获得console.Writeline输出? class Program{ public static void Main() { TestTimer timer = new TestTimer(); timer = nu
我的问题很简单,为什么GC无法弄清楚主要的计时器对象应该与TestTimer和相关的EventHandler中的计时器一起被垃圾收集?
为什么我不断获得console.Writeline输出? class Program { public static void Main() { TestTimer timer = new TestTimer(); timer = null; GC.Collect(); GC.WaitForPendingFinalizers(); Console.ReadKey(); } } public class TestTimer { private Timer timer; public TestTimer() { timer = new Timer(1000); timer.Elapsed += new ElapsedEventHandler(timer_Elapsed); timer.Start(); } private void timer_Elapsed(Object sender,ElapsedEventArgs args) { Console.Write("n" + DateTime.Now); } } 解决方法
不依赖于GC,使用Dispose模式正确处理TestTimer(然后应该丢弃Timer).
然而,发生的事情是计时器通过自己获取GC句柄来保持活跃.阅读此博文: http://nitoprograms.blogspot.com/2011/07/systemthreadingtimer-constructor-and.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FOlZtT+%28Nito+Programming%29 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- JLINK烧写BIN文件到nand、norflash、SDRAM
- oracle统计时间段内每一天的数据(推荐)
- objective-c – 合并两个iOS Core数据持久性商店的有效方式
- EF 配置Oracle数据库 EntityType“PersonInfoTest”未定义键
- 【求证】AppStore Warning 并非针对 RN/Weex 这类技术
- c# – S3请求时间过于偏斜
- c# – WebMatrix.WebData.WebSecurity – 如何只通过Passwo
- 《不靠谱2.x》006.CCSprite(上)003 CCSpriteFrame
- DWR3与spring集成(不使用springMVC,但使用注解的实例)
- 在ruby中编写文件更改侦听器