GC.WaitForFullGCApproach Yöntem

Tanım

Ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplama işleminin anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

Aşırı Yüklemeler

WaitForFullGCApproach()

Ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplama işleminin anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCApproach(Int32)

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplamanın anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCApproach(TimeSpan)

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplamanın anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

WaitForFullGCApproach()

Kaynak:
GC.CoreCLR.cs
Kaynak:
GC.CoreCLR.cs
Kaynak:
GC.CoreCLR.cs

Ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplama işleminin anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

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

Döndürülenler

Kayıtlı çöp toplama bildirim durumu.

Öznitelikler

Örnekler

Aşağıdaki örnekte, tam, engelleyen bir çöp toplamanın yaklaşıp yaklaşmadığını belirlemek için bu yöntemin nasıl kullanılacağı gösterilmektedir. Bildirimin durumu her olduğunda Succeeded, yaklaşan koleksiyona yanıt olarak eylemler gerçekleştirmek için kullanıcı yöntemi OnFullGCApproachNotify çağrılır. Bu kod örneği, Çöp Toplama Bildirimleri konusu için sağlanan daha büyük bir örneğin bir parçasıdır.

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

Açıklamalar

GCNotificationStatus yöntemi kullanılarak kaydedilen geçerli çöp toplama bildiriminin durumunu belirlemek için bu yöntem tarafından döndürülen numaralandırmayı RegisterForFullGCNotification kullanın. Tam çöp toplama işleminin WaitForFullGCComplete tamamlanıp tamamlanmadığını belirlemek için yöntemini de kullanabilirsiniz.

Numaralandırma döndürdüğünde Succeeded, ek nesnelerin ayrılmasını önleme ve yöntemiyle Collect bir koleksiyonu kendiniz çağırma gibi görevleri gerçekleştirebilirsiniz. Bildirimin tam çöp toplamanın gerçekleşeceğini garanti etmediğini, yalnızca koşulların tam çöp toplama için uygun olan eşiğe ulaştığını unutmayın.

Bu yöntem, bir çöp toplama bildiriminin alınması için süresiz olarak bekler. Bildirim alınamazsa yöntemin döndürülmesi için bir zaman aşımı süresi belirtmek istiyorsanız yöntem aşırı yüklemesini GC.WaitForFullGCApproach(Int32) kullanın. Zaman aşımı belirtmeden bu yöntemi çağırırsanız, tercih edilenden daha uzun süre bekliyorsanız yöntemini çağırabilirsiniz CancelFullGCNotification .

Tam bir çöp toplamaya sahip olduğunuzdan WaitForFullGCComplete emin olmak için yöntemine bir çağrı ile bu yöntemi izlemeniz gerekir. Bu yöntemi tek başına çağırmak belirsiz sonuçlara neden olur.

Ayrıca bkz.

Şunlara uygulanır

WaitForFullGCApproach(Int32)

Kaynak:
GC.CoreCLR.cs
Kaynak:
GC.CoreCLR.cs
Kaynak:
GC.CoreCLR.cs

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplamanın anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

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

Parametreler

millisecondsTimeout
Int32

Bildirim durumunun elde edilebilmesi için beklenecek süre. Süresiz olarak beklemek için -1 belirtin.

Döndürülenler

Kayıtlı çöp toplama bildirim durumu.

Öznitelikler

Özel durumlar

millisecondsTimeout negatif olmayan veya Int32.MaxValue veya -1 değerinden küçük veya buna eşit olmalıdır.

Açıklamalar

GCNotificationStatus yöntemi kullanılarak kaydedilen geçerli çöp toplama bildiriminin durumunu belirlemek için bu yöntem tarafından döndürülen numaralandırmayı RegisterForFullGCNotification kullanın. Tam çöp toplama işleminin WaitForFullGCComplete tamamlanıp tamamlanmadığını belirlemek için yöntemini de kullanabilirsiniz.

Bu yöntemin, tarafından millisecondsTimeoutbelirtilen değerden bağımsız olarak bir çöp toplama bildirim durumu alındığında hemen döndürdüğünü unutmayın. Zaman aşımına uğramadan önce millisecondsTimeout bir çöp toplama bildirim durumu alınmazsa, bu yöntem döndürür NotApplicable.

Numaralandırma döndürdüğünde Succeeded, ek nesnelerin ayrılmasını önleme ve yöntemiyle Collect bir koleksiyonu kendiniz çağırma gibi görevleri gerçekleştirebilirsiniz. Bildirimin tam çöp toplamanın gerçekleşeceğini garanti etmediğini, yalnızca koşulların tam çöp toplama için uygun olan eşiğe ulaştığını unutmayın.

Zaman aşımı süresinin geçmesini bekleyemediğiniz durumlarda yöntemini çağırabilirsiniz CancelFullGCNotification .

Tam bir çöp toplamaya sahip olduğunuzdan WaitForFullGCComplete emin olmak için yöntemine bir çağrı ile bu yöntemi izlemeniz gerekir. Bu yöntemi tek başına çağırmak belirsiz sonuçlara neden olur.

Ayrıca bkz.

Şunlara uygulanır

WaitForFullGCApproach(TimeSpan)

Kaynak:
GC.cs
Kaynak:
GC.cs
Kaynak:
GC.cs

Belirtilen zaman aşımı süresinde, ortak dil çalışma zamanı tarafından tam, engelleyici bir çöp toplamanın anlık olup olmadığını belirlemek için kayıtlı bildirimin durumunu döndürür.

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

Parametreler

timeout
TimeSpan

Tam GC yaklaşımını beklerken zaman aşımı

Döndürülenler

Kayıtlı tam GC bildiriminin durumu

Şunlara uygulanır