System.GC.WaitForFullGCApproach 方法
方法描述
返回已注册通知的状态,用于确定公共语言运行时是否即将引发完整垃圾回收。
语法定义(C# System.GC.WaitForFullGCApproach 方法 的用法)
public static GCNotificationStatus WaitForFullGCApproach()
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
返回值 | System.GCNotificationStatus | 已注册垃圾回收通知的状态。 |
提示和注释
使用此方法返回的 GCNotificationStatus 枚举,确定使用 RegisterForFullGCNotification 方法注册的当前垃圾回收通知的状态。 还可以使用 WaitForFullGCComplete 方法来确定完整垃圾回收是否已完成。
当枚举返回 Succeeded 时,您可以执行一些任务,例如:阻止分配其他对象以及使用 Collect 方法自行引发回收。 请注意,通知不保证将发生完整垃圾回收,只保证条件已达到阈值,支持发生完整垃圾回收。
此方法会无限期等待获取垃圾回收通知。 如果要指定此方法在无法获取通知时返回的超时期限,请使用 GC.WaitForFullGCApproach(Int32) 方法重载。 如果在调用此方法时未指定超时期限,则可以在等待时间过长时调用 CancelFullGCNotification 方法。
应在此方法之后调用 WaitForFullGCComplete 方法,以确保已进行过完整垃圾回收。 单独调用此方法会导致不确定结果。
System.GC.WaitForFullGCApproach 方法例子
此代码示例摘自为垃圾回收通知主题提供的一个更大示例。
// Check for a notification of an approaching collection. GCNotificationStatus s = GC.WaitForFullGCApproach(); if (s == GCNotificationStatus.Succeeded) { Console.WriteLine("GC Notifiction raised."); OnFullGCApproachNotify(); } else if (s == GCNotificationStatus.Canceled) { Console.WriteLine("GC Notification cancelled."); break; } else { // This can occur if a timeout period // is specified for WaitForFullGCApproach(Timeout) // or WaitForFullGCComplete(Timeout) // and the time out period has elapsed. Console.WriteLine("GC Notification not applicable."); break; }
版本信息
.NET Framework 受以下版本支持:4、3.5 SP1、3.0 SP2、2.0 SP2 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。