lys*_*cid 2 .net c# coding-style finalize
我最近遇到了一个与在Finalize方法重载中运行的代码有关的问题.
我大部分都知道与内存管理/性能有关的问题,但我感兴趣的是,是否有任何关于"哪些代码应该/不应该用于Finalize方法"的指南?
例如:
我的案例中的行为是由于引发的事件导致了一些异常.
所以我的问题是 - 关于finalize方法,我必须遵循哪些指导原则(甚至可能强制使用某些工具)?
最终确定只是为了摆脱非托管资源
来自MSDN
如果Finalize或Finalize的覆盖引发异常,并且运行时不由覆盖默认策略的应用程序托管,则运行时将终止该进程,并且不会执行活动的try-finally块或终结器.如果终结器无法释放或销毁资源,则此行为可确保进程完整性.
最终操作具有以下限制:
在垃圾收集期间执行终结器的确切时间未定义.除非调用Close方法或Dispose方法,否则不保证在任何特定时间释放资源.
两个对象的终结器不保证以任何特定顺序运行,即使一个对象引用另一个对象.也就是说,如果对象A有一个参考对象B并且都终结,对象B可能已经对象A的终结开始时敲定.
运行终结器的线程未指定