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;
}

异常

异常 异常描述

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.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 系统要求。