Condividi tramite


GC.WaitForFullGCApproach Metodo

Definizione

Restituisce lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

Overload

WaitForFullGCApproach()

Restituisce lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

WaitForFullGCApproach(Int32)

Restituisce, in un periodo di timeout specificato, lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

WaitForFullGCApproach(TimeSpan)

Restituisce, in un periodo di timeout specificato, lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

WaitForFullGCApproach()

Origine:
GC.CoreCLR.cs
Origine:
GC.CoreCLR.cs
Origine:
GC.CoreCLR.cs

Restituisce lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

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

Restituisce

Stato della notifica dell'operazione di Garbage Collection registrata.

Attributi

Esempio

Nell'esempio riportato di seguito viene illustrato come utilizzare questo metodo per determinare se è imminente una procedura completa di Garbage Collection bloccante. Ogni volta che lo stato della notifica è Succeeded, il metodo OnFullGCApproachNotify utente viene chiamato per eseguire azioni in risposta alla raccolta di avvicinamento. Questo esempio di codice fa parte di un esempio più ampio fornito per l'argomento Notifiche di Garbage Collection .

// 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

Commenti

Usare l'enumerazione GCNotificationStatus restituita da questo metodo per determinare lo stato della notifica di Garbage Collection corrente registrata usando il RegisterForFullGCNotification metodo . È anche possibile usare il WaitForFullGCComplete metodo per determinare se la Garbage Collection completa è stata completata.

Quando l'enumerazione restituisce Succeeded, è possibile eseguire attività come impedire l'allocazione di oggetti aggiuntivi e l'induzione di una raccolta con il Collect metodo . Si noti che la notifica non garantisce che si verifichi una Garbage Collection completa, solo che le condizioni hanno raggiunto la soglia favorevole per un garbage collection completo.

Questo metodo attende in modo indefinito che venga ottenuta una notifica di Garbage Collection. Se si vuole specificare un periodo di timeout per il metodo da restituire se non è possibile ottenere la notifica, usare l'overload del GC.WaitForFullGCApproach(Int32) metodo. Se si chiama questo metodo senza specificare un timeout, è possibile chiamare il CancelFullGCNotification metodo se si è in attesa più lungo del preferito.

È consigliabile seguire questo metodo con una chiamata al WaitForFullGCComplete metodo per assicurarsi di avere una Garbage Collection completa. La chiamata di questo metodo da sola causa risultati indeterminato.

Vedi anche

Si applica a

WaitForFullGCApproach(Int32)

Origine:
GC.CoreCLR.cs
Origine:
GC.CoreCLR.cs
Origine:
GC.CoreCLR.cs

Restituisce, in un periodo di timeout specificato, lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

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

Parametri

millisecondsTimeout
Int32

Tempo di attesa prima di poter ottenere lo stato di una notifica. Specificare -1 per restare in attesa in modo indefinito.

Restituisce

Stato della notifica dell'operazione di Garbage Collection registrata.

Attributi

Eccezioni

millisecondsTimeout deve essere non negativo o minore o uguale a Int32.MaxValue o -1.

Commenti

Usare l'enumerazione GCNotificationStatus restituita da questo metodo per determinare lo stato della notifica di Garbage Collection corrente registrata usando il RegisterForFullGCNotification metodo . È anche possibile usare il WaitForFullGCComplete metodo per determinare se la Garbage Collection completa è stata completata.

Si noti che questo metodo restituisce immediatamente ogni volta che viene ottenuto uno stato di notifica di Garbage Collection, indipendentemente dal valore specificato da millisecondsTimeout. Se lo stato di notifica di Garbage Collection non viene ottenuto prima millisecondsTimeout del timeout, questo metodo restituisce NotApplicable.

Quando l'enumerazione restituisce Succeeded, è possibile eseguire attività come impedire l'allocazione di oggetti aggiuntivi e l'induzione di una raccolta con il Collect metodo . Si noti che la notifica non garantisce che si verifichi una Garbage Collection completa, solo che le condizioni hanno raggiunto la soglia favorevole per un garbage collection completo.

È possibile chiamare il CancelFullGCNotification metodo quando non è possibile attendere che il periodo di timeout venga trascorso.

È consigliabile seguire questo metodo con una chiamata al WaitForFullGCComplete metodo per assicurarsi di avere una Garbage Collection completa. La chiamata di questo metodo da sola causa risultati indeterminato.

Vedi anche

Si applica a

WaitForFullGCApproach(TimeSpan)

Origine:
GC.cs
Origine:
GC.cs
Origine:
GC.cs

Restituisce, in un periodo di timeout specificato, lo stato di una notifica registrata per determinare se una procedura completa di Garbage Collection bloccante tramite Common Language Runtime sia imminente.

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

Parametri

timeout
TimeSpan

Timeout in attesa di un approccio GC completo

Restituisce

Stato di una notifica GC completa registrata

Si applica a