c# – 终结器陷入无限循环
发布时间:2020-12-15 08:15:05 所属栏目:百科 来源:网络整理
导读:我遇到了一个面试问题,我不知道答案(小帮助:)) 它说的有点类似: Class SomeClass : IDisposable { public void Dispose() { while(true) { } } ~SomeClass() { Dispose(); }} 1)在下一个GC之后不再引用时,对象是否已完成?我的答案是否定的,因为终结线程将
我遇到了一个面试问题,我不知道答案(小帮助:))
它说的有点类似: Class SomeClass : IDisposable { public void Dispose() { while(true) { } } ~SomeClass() { Dispose(); } } 1)在下一个GC之后不再引用时,对象是否已完成?我的答案是否定的,因为终结线程将停留在无限循环上. 2)在Dispose中可以做什么来结束最终化以及在对象被处置之前循环继续多少次(没有考虑它将在下一代中花费的时间) 我不是特别清楚确切的问题(2).我有点没时间了…… 不知道答案我把一个静态计数器变为3并且调用break并声明3 我猜它与GC.SupressFinalize()有关吗? 任何想法,如果不是对不明确的问题的答案,更多的是他们可能的目标是什么? 解决方法
发生的事情相当无关紧要. CLR将终止程序,终结器上有2秒超时.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |