GC.WaitForFullGCApproach Método

Definição

Retorna o status de uma notificação registrada para determinar se uma coleção completa de lixo de bloqueio realizada pelo Common Language Runtime foi concluída.

Sobrecargas

WaitForFullGCApproach()

Retorna o status de uma notificação registrada para determinar se uma coleção completa de lixo de bloqueio realizada pelo Common Language Runtime foi concluída.

WaitForFullGCApproach(Int32)

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo de bloqueio completa executada pelo Common Language Runtime é iminente.

WaitForFullGCApproach(TimeSpan)

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo de bloqueio completa executada pelo Common Language Runtime é iminente.

WaitForFullGCApproach()

Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs

Retorna o status de uma notificação registrada para determinar se uma coleção completa de lixo de bloqueio realizada pelo Common Language Runtime foi concluída.

public:
 static GCNotificationStatus WaitForFullGCApproach();
public static GCNotificationStatus WaitForFullGCApproach ();
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach ();
static member WaitForFullGCApproach : unit -> GCNotificationStatus
[<System.Security.SecurityCritical>]
static member WaitForFullGCApproach : unit -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach () As GCNotificationStatus

Retornos

O status da notificação de coleta de lixo registrada.

Atributos

Exemplos

O exemplo a seguir mostra como usar esse método para determinar se uma coleta de lixo completa e de bloqueio está se aproximando. Sempre que o status da notificação é Succeeded, o método OnFullGCApproachNotify do usuário é chamado para executar ações em resposta à coleção que se aproxima. Este exemplo de código faz parte de um exemplo maior fornecido para o tópico Notificações de Coleta de Lixo .

// 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;
}
// Check for a notification of an approaching collection.
GCNotificationStatus s = GC.WaitForFullGCApproach();
if (s == GCNotificationStatus.Succeeded)
{
    Console.WriteLine("GC Notification 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;
}
// Check for a notification of an approaching collection.
match GC.WaitForFullGCApproach() with
| GCNotificationStatus.Succeeded ->
    printfn "GC Notification raised."
    onFullGCApproachNotify ()
    // Check for a notification of a completed collection.
    match GC.WaitForFullGCComplete() with
    | GCNotificationStatus.Succeeded ->
        printfn "GC Notification raised."
        onFullGCCompleteEndNotify ()
    | GCNotificationStatus.Canceled ->
        printfn "GC Notification cancelled."
        broken <- true
    | _ ->
        // Could be a time out.
        printfn "GC Notification not applicable."
        broken <- true
| GCNotificationStatus.Canceled ->
    printfn "GC Notification cancelled."
    broken <- true
| _ ->
    // This can occur if a timeout period
    // is specified for WaitForFullGCApproach(Timeout)
    // or WaitForFullGCComplete(Timeout)
    // and the time out period has elapsed.
    printfn "GC Notification not applicable."
    broken <- true
' Check for a notification of an approaching collection.
Dim s As GCNotificationStatus = GC.WaitForFullGCApproach
If (s = GCNotificationStatus.Succeeded) Then
    Console.WriteLine("GC Notification raised.")
    OnFullGCApproachNotify()
ElseIf (s = GCNotificationStatus.Canceled) Then
    Console.WriteLine("GC Notification cancelled.")
    Exit While
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.")
    Exit While
End If

Comentários

Use a enumeração GCNotificationStatus retornada por esse método para determinar o status da notificação de coleta de lixo atual que foi registrado usando-se o método RegisterForFullGCNotification. Você também pode usar o WaitForFullGCComplete método para determinar se a coleta de lixo completa foi concluída.

Quando a enumeração retorna Succeeded, você pode realizar tarefas como impedir que objetos adicionais sejam alocados e induzir uma coleção por conta própria com o Collect método . Observe que a notificação não garante que uma coleta de lixo completa ocorra, apenas que as condições atingiram o limite favorável para que uma coleta de lixo completa ocorra.

Esse método aguarda indefinidamente que uma notificação de coleta de lixo seja obtida. Se você quiser especificar um período de tempo limite para o método retornar se a notificação não puder ser obtida, use a sobrecarga do GC.WaitForFullGCApproach(Int32) método . Se você chamar esse método sem especificar um tempo limite, poderá chamar o CancelFullGCNotification método se estiver aguardando mais do que o preferencial.

Você deve seguir esse método com uma chamada para o WaitForFullGCComplete método para verificar se você teve uma coleta de lixo completa. Chamar esse método sozinho causa resultados indeterminados.

Confira também

Aplica-se a

WaitForFullGCApproach(Int32)

Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs
Origem:
GC.CoreCLR.cs

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo de bloqueio completa executada pelo Common Language Runtime é iminente.

public:
 static GCNotificationStatus WaitForFullGCApproach(int millisecondsTimeout);
public static GCNotificationStatus WaitForFullGCApproach (int millisecondsTimeout);
[System.Security.SecurityCritical]
public static GCNotificationStatus WaitForFullGCApproach (int millisecondsTimeout);
static member WaitForFullGCApproach : int -> GCNotificationStatus
[<System.Security.SecurityCritical>]
static member WaitForFullGCApproach : int -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach (millisecondsTimeout As Integer) As GCNotificationStatus

Parâmetros

millisecondsTimeout
Int32

O período de espera antes que um status de notificação possa ser obtido. Especifique -1 para aguardar indefinidamente.

Retornos

O status da notificação de coleta de lixo registrada.

Atributos

Exceções

millisecondsTimeout deve ser não negativo ou menor ou igual a Int32.MaxValue ou -1.

Comentários

Use a enumeração GCNotificationStatus retornada por esse método para determinar o status da notificação de coleta de lixo atual que foi registrado usando-se o método RegisterForFullGCNotification. Você também pode usar o WaitForFullGCComplete método para determinar se a coleta de lixo completa foi concluída.

Observe que esse método retorna imediatamente sempre que uma notificação de coleta de lixo status é obtida, independentemente do valor especificado por millisecondsTimeout. Se uma notificação de coleta de lixo status não for obtida antes millisecondsTimeout do tempo limite, esse método retornará NotApplicable.

Quando a enumeração retorna Succeeded, você pode realizar tarefas como impedir que objetos adicionais sejam alocados e induzir uma coleção por conta própria com o Collect método . Observe que a notificação não garante que uma coleta de lixo completa ocorra, apenas que as condições atingiram o limite favorável para que uma coleta de lixo completa ocorra.

Você pode chamar o CancelFullGCNotification método quando não pode aguardar o período de tempo limite decorrido.

Você deve seguir esse método com uma chamada para o WaitForFullGCComplete método para verificar se você teve uma coleta de lixo completa. Chamar esse método sozinho causa resultados indeterminados.

Confira também

Aplica-se a

WaitForFullGCApproach(TimeSpan)

Origem:
GC.cs
Origem:
GC.cs
Origem:
GC.cs

Retorna, em um período de tempo limite especificado, o status de uma notificação registrada para determinar se uma coleta de lixo de bloqueio completa executada pelo Common Language Runtime é iminente.

public:
 static GCNotificationStatus WaitForFullGCApproach(TimeSpan timeout);
public static GCNotificationStatus WaitForFullGCApproach (TimeSpan timeout);
static member WaitForFullGCApproach : TimeSpan -> GCNotificationStatus
Public Shared Function WaitForFullGCApproach (timeout As TimeSpan) As GCNotificationStatus

Parâmetros

timeout
TimeSpan

O tempo limite de espera por uma abordagem completa do GC

Retornos

O status de uma notificação de GC completa registrada

Aplica-se a