|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Object.Finalize-Methode
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Hinweis |
|---|
Der genaue Zeitpunkt, zu dem der Finalizer während der Garbage Collection ausgeführt wird, ist undefiniert. Es ist nicht garantiert, dass Ressourcen zu einem bestimmten Zeitpunkt freigegeben werden, es sei denn, es wird eine Close-Methode oder eine Dispose-Methode aufgerufen. Es ist nicht gewährleistet, dass die Finalizer zweier Objekte in einer bestimmten Reihenfolge ausgeführt werden, selbst dann nicht, wenn eines der Objekte auf das andere verweist. Wenn Objekt A einen Verweis auf Objekt B enthält und beide Finalizer besitzen, könnte Objekt B daher bereits finalisiert worden sein, wenn der Finalizer von Objekt A aufgerufen wird. Der Thread, in dem der Finalizer aufgerufen wird, ist unbestimmt.
Ein anderer Finalizer ist auf unbestimmte Zeit blockiert (er befindet sich in einer Endlosschleife oder versucht, eine Sperre zur erhalten, deren Erhalt ihm nicht gewährt werden wird usw.). Da die Laufzeit versucht, Finalizer bis zum Ende auszuführen, werden andere Finalizer möglicherweise nicht ausgeführt, wenn ein Finalizer auf unbestimmte Zeit blockiert ist. Der Prozess wird beendet, ohne dass die Laufzeit die Möglichkeit hatte, eine Bereinigung durchzuführen. In diesem Falle ist die erste Benachrichtigung der Laufzeit über die Beendigung des Prozesses eine DLL_PROCESS_DETACH-Benachrichtigung.
using System; using System.Diagnostics; public class ExampleClass { Stopwatch sw; public ExampleClass() { sw = Stopwatch.StartNew(); Console.WriteLine("Instantiated object"); } public void ShowDuration() { Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } ~ExampleClass() { Console.WriteLine("Finalizing object"); sw.Stop(); Console.WriteLine("This instance of {0} has been in existence for {1}", this, sw.Elapsed); } } public class Demo { public static void Main() { ExampleClass ex = new ExampleClass(); ex.ShowDuration(); } } // The example displays output like the following: // Instantiated object // This instance of ExampleClass has been in existence for 00:00:00.0011060 // Finalizing object // This instance of ExampleClass has been in existence for 00:00:00.0036294
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.
Hinweis