(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

GC.ReRegisterForFinalize-Methode

Fordert beim System den Aufruf des Finalizers für das angegebene Objekt an, für das zuvor SuppressFinalize aufgerufen wurde.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public static void ReRegisterForFinalize(
	Object obj
)

Parameter

obj
Typ: System.Object
Das Objekt, für das ein Finalizer aufgerufen werden muss.

AusnahmeBedingung
ArgumentNullException

obj ist null.

Die ReRegisterForFinalize-Methode fügt der Liste der Objekte, für die vor der Freigabe durch den Garbage Collector eine Finalisierung angefordert wird, den obj-Parameter hinzu. Der obj-Parameter muss der Aufrufer dieser Methode sein.

Der Aufruf der ReRegisterForFinalize-Methode garantiert nicht, dass der Garbage Collector den Finalizer des Objekts aufruft.

In der Standardeinstellung werden alle Objekte, die Finalizer implementieren, in die Liste der Objekte aufgenommen, die finalisiert werden müssen. Jedoch kann ein Objekt bereits finalisiert worden sein, oder die Finalisierung kann durch einen Aufruf der SuppressFinalize-Methode deaktiviert worden sein.

Ein Finalizer kann diese Methode verwenden, um das eigene Objekt oder ein Objekt, auf das er verweist, wieder zugänglich zu machen.

Im folgenden Beispiel wird veranschaulicht, wie die ReRegisterForFinalize-Methode verwendet wird, um ein Objekt ein zweites Mal nach der Garbage Collection zu finalisieren.


using System;

namespace ReRegisterForFinalizeExample
{
    class MyMainClass
    {
        static void Main()
        {
            // Create a MyFinalizeObject.
            MyFinalizeObject mfo = new MyFinalizeObject();

            // Release the reference to mfo.
            mfo = null;

            // Force a garbage collection.
            GC.Collect();

            // At this point mfo will have gone through the first Finalize.
            // There should now be a reference to mfo in the static
            // MyFinalizeObject.currentInstance field.  Setting this value
            // to null and forcing another garbage collection will now
            // cause the object to Finalize permanently.
            MyFinalizeObject.currentInstance = null;
            GC.Collect();
        }
    }

    class MyFinalizeObject
    {
        public static MyFinalizeObject currentInstance = null;
        private bool hasFinalized = false;

        ~MyFinalizeObject()
        {
            if(hasFinalized == false)
            {
                Console.WriteLine("First finalization");

                // Put this object back into a root by creating
                // a reference to it.
                MyFinalizeObject.currentInstance = this;

                // Indicate that this instance has finalized once.
                hasFinalized = true;

                // Place a reference to this object back in the
                // finalization queue.
                GC.ReRegisterForFinalize(this);
            }
            else
            {
                Console.WriteLine("Second finalization");
            }
        }
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft