AppDomain.IsFinalizingForUnload 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
指示此应用程序域是否正在卸载以及公共语言运行时是否正在终止该域包含的对象。
public:
bool IsFinalizingForUnload();
public bool IsFinalizingForUnload ();
member this.IsFinalizingForUnload : unit -> bool
Public Function IsFinalizingForUnload () As Boolean
返回
如果此应用程序域正在卸载,并且公共语言运行时已开始调用终止程序,则为 true
;否则为 false
。
注解
对象的最终化方法提供了在垃圾回收对象之前执行任何必要的清理操作的机会。 最终化后,对象可访问,但处于无效状态,因此不可用。 最终,垃圾回收完成并回收对象。
在以下情况之一中调用对象的最终化方法:在垃圾回收期间、公共语言运行时关闭或卸载包含该对象的应用程序域时。 该方法 IsFinalizingForUnload 仅在最后一种情况下返回 true
;如果最终结果来自例程垃圾回收或 CLR 关闭,则不会返回 true
此方法。
备注
若要确定最终化是否是由于 CLR 关闭,请使用 Environment.HasShutdownStarted 该属性。 如果最终化是由于应用程序域被卸载或 CLR 关闭,则返回 true
它。
在域卸载期间在最终化方法中执行时,你可能想要访问静态字段引用的另一个对象,并且具有最终化方法。 但是,无法可靠地执行此操作,因为访问的对象可能已经完成。
备注
此规则的例外是 Console 类,该类包含引用流对象的静态字段,但已专门实现,以便始终可以写入系统控制台,即使在域卸载或系统关闭期间也是如此。
在对象的最终化方法中使用此方法来确定包含该对象的应用程序域是否正在卸载。 如果是这种情况,则无法可靠地访问具有最终化方法且由静态字段引用的任何对象。