İngilizce dilinde oku

Aracılığıyla paylaş


GCNotificationStatus Sabit listesi

Tanım

Sonraki tam çöp toplama bildirimi için geçerli kayıt hakkında bilgi sağlar.

C#
public enum GCNotificationStatus
C#
[System.Serializable]
public enum GCNotificationStatus
Devralma
GCNotificationStatus
Öznitelikler

Alanlar

Canceled 2

Geçerli kayıt kullanıcı tarafından iptal edildi.

Failed 1

Bildirim herhangi bir nedenle başarısız oldu.

NotApplicable 4

Bu değer, bir çöp toplama bildirimi için geçerli kayıt olmadığında veya tam GC gerçekleştiğinde ancak tam engelleme GC'sinin yerine arka plan GC'si (çoğunlukla kullanıcı iş parçacıklarıyla eşzamanlı olarak çalışan bir GC) olarak yapıldığında sonuçlanabilir. Arka plan GC varsayılan olarak etkindir; devre dışı bırakmak tahmin doğruluğunu artırır ancak daha büyük GC duraklamalarına neden olur.

Succeeded 0

Bildirim başarılı oldu ve kayıt iptal edilemedi.

Timeout 3

veya WaitForFullGCComplete(Int32) parametresi WaitForFullGCApproach(Int32) tarafından millisecondsTimeout belirtilen süre doldu.

Örnekler

Aşağıdaki örnek yönteminden WaitForFullGCApproach bir GCNotificationStatus sabit listesi alır. Numaralandırma Başarılı sonucunu döndürürse, yaklaşan tam çöp toplama işlemine yanıt olarak eylem gerçekleştirmek için özel yöntemi OnFullGCApproachNotify çağırır. Bu kod örneği, Çöp Toplama Bildirimleri konusu için sağlanan daha büyük bir örneğin parçasıdır.

C#
public static void WaitForFullGCProc()
{
    while (true)
    {
        // CheckForNotify is set to true and false in Main.
        while (checkForNotify)
        {
            // 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 a completed collection.
            GCNotificationStatus status = GC.WaitForFullGCComplete();
            if (status == GCNotificationStatus.Succeeded)
            {
                Console.WriteLine("GC Notification raised.");
                OnFullGCCompleteEndNotify();
            }
            else if (status == GCNotificationStatus.Canceled)
            {
                Console.WriteLine("GC Notification cancelled.");
                break;
            }
            else
            {
                // Could be a time out.
                Console.WriteLine("GC Notification not applicable.");
                break;
            }
        }

        Thread.Sleep(500);
        // FinalExit is set to true right before
        // the main thread cancelled notification.
        if (finalExit)
        {
            break;
        }
    }
}

Açıklamalar

RegisterForFullGCNotification Tam çöp toplama bildirimine kaydolmak için yöntemini kullanın. Ardından, bildirimin WaitForFullGCApproach WaitForFullGCComplete durumunu içeren bir GCNotificationStatus numaralandırma döndürmek için yöntemini veya yöntemini kullanın.

Şunlara uygulanır

Ürün Sürümler
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Ayrıca bkz.