Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

CriticalFinalizerObject-Klasse

 

Veröffentlicht: Oktober 2016

Gewährleistet, dass der gesamte Finalisierungscode in abgeleiteten Klassen als kritisch gekennzeichnet ist.

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


[ComVisibleAttribute(true)]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, 
	UnmanagedCode = true)]
public abstract class CriticalFinalizerObject

NameBeschreibung
System_CAPS_protmethodCriticalFinalizerObject()

Initialisiert eine neue Instanz der CriticalFinalizerObject-Klasse.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethodFinalize()

Gibt alle von der CriticalFinalizerObject-Klasse verwendeten Ressourcen frei.(Überschreibt Object.Finalize().)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethodMemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Klassen, die von der CriticalFinalizerObject Klasse implizit als einem eingeschränkten Ausführungsbereich (CER) behandelt. Dies erfordert Code im Finalizer nur Code mit einem starken Zuverlässigkeitsvertrag aufrufen. Weitere Informationen über CERs finden Sie unter der System.Runtime.ConstrainedExecution Namespace.

In von abgeleiteten Klassen der CriticalFinalizerObject die common Language Runtime (CLR) stellt sicher, dass wichtiger Finalisierungscode ausgeführt wird, kann, sofern der Finalizer die Regeln für eine CER, die auch in Situationen befolgt, in denen Entladen einer Anwendungsdomäne CLR erzwungen oder Beenden eines Threads. Wenn ein Finalizer gegen die Regeln für eine CER verstößt, kann er nicht erfolgreich ausgeführt. Außerdem die CLR stellt eine schwache Reihenfolge von normalen und wichtigen Finalizern: für Objekte, die von der Garbagecollection gleichzeitig freigegeben, alle nicht kritischen Finalizer immer vor den kritischen Finalizer aufgerufen. Z. B. eine Klasse wie z. B. FileStream, Daten in der SafeHandle -Klasse, die von abgeleitet ist CriticalFinalizerObject, führe einen standard Finalizer, um vorhandene gepufferte Daten zu entfernen.

In den meisten Fällen, Sie brauchen von abgeleiteten Klassen schreiben die CriticalFinalizerObject Klasse. Die .NET Framework-Klassenbibliothek stellt die beiden Klassen SafeHandle und CriticalHandle, kritische Finalisierung Funktionalität für Handleressourcen bereitstellen. .NET Framework bietet darüber hinaus einen Satz von vordefinierten von abgeleiteten Klassen der SafeHandle -Klasse, und diese Gruppe befindet sich der Microsoft.Win32.SafeHandles Namespace. Diese Klassen bieten allgemeine Funktionen für die Unterstützung von Datei- und Betriebssystemhandles dienen.

Das folgende Codebeispiel zeigt die Verwendung der SafeFileHandle -Klasse, für die standardmäßigen Eingabe- und Ausgabedatenströme Kritische Finalisierung bereitzustellen. Die SafeFileHandle, abgeleitet von der SafeHandle -Klasse, wird in den Datei-Stream übergeben der FileStream Konstruktor.

using System;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.Win32.SafeHandles;

namespace CriticalFinalizer
{
    class Program
    {
        const int STD_INPUT_HANDLE   = -10;
        const int STD_OUTPUT_HANDLE = -11;
        const int STD_ERROR_HANDLE  =  -12;
        [DllImport("Kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern IntPtr GetStdHandle(int type);

        static void Main(string[] args)
        {
            FileStream fsIn = null;
            FileStream fsOut = null;
            try
            {
                SafeFileHandle sfhIn = new SafeFileHandle(GetStdHandle(STD_INPUT_HANDLE), false);
                fsIn = new FileStream(sfhIn, FileAccess.Read);
                byte[] input = new byte[] {0};
                fsIn.Read(input,0,1);
                SafeFileHandle sfhOut = new SafeFileHandle(GetStdHandle(STD_OUTPUT_HANDLE), false);
                fsOut = new FileStream(sfhOut, FileAccess.Write);
                fsOut.Write(input,0,1);
                SafeFileHandle sf = fsOut.SafeFileHandle;
            }
            finally
            {
                if (fsIn != null)
                {
                    fsIn.Close();
                    fsIn = null;
                }
                if (fsOut != null)
                {
                    fsOut.Close();
                    fsOut = null;
                }
            }
        }

    }
}

SecurityPermission

for permission to call unmanaged code. Security action: F:System.Security.Permissions.SecurityAction.LinkDemand. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode

InheritanceDemand

for full trust for inheritors. This class cannot be used by partially trusted code.

.NET Framework
Verfügbar seit 2.0
Silverlight
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: