Teilen über


EClrOperation-Enumeration

Hier werden die Vorgänge beschrieben, für die ein Host Richtlinienaktionen anwenden kann.

Syntax

typedef enum {  
    OPR_ThreadAbort,  
    OPR_ThreadRudeAbortInNonCriticalRegion,  
    OPR_ThreadRudeAbortInCriticalRegion,  
    OPR_AppDomainUnload,  
    OPR_AppDomainRudeUnload,  
    OPR_ProcessExit,  
    OPR_FinalizerRun  
} EClrOperation;  

Member

Member Beschreibung
OPR_AppDomainRudeUnload Der Host kann Richtlinienaktionen angeben, die ausgeführt werden sollen, wenn AppDomain nicht ordnungsgemäß (auf nicht unterstützte Weise) entladen wird.
OPR_AppDomainUnload Der Host kann Richtlinienaktionen angeben, die beim Entladen von AppDomain ausgeführt werden sollen.
OPR_FinalizerRun Der Host kann Richtlinienaktionen angeben, die beim Ausführen von Finalizern ausgeführt werden sollen.
OPR_ProcessExit Der Host kann Richtlinienaktionen angeben, die beim Beenden des Prozesses ausgeführt werden sollen.
OPR_ThreadAbort Der Host kann Richtlinienaktionen angeben, die beim Abbrechen eines Threads ausgeführt werden sollen.
OPR_ThreadRudeAbortInCriticalRegion Der Host kann Richtlinienaktionen angeben, die ausgeführt werden sollen, wenn ein nicht unterstützter Threadabbruch in einem kritischen Codebereich erfolgt.
OPR_ThreadRudeAbortInNonCriticalRegion Der Host kann Richtlinienaktionen angeben, die ausgeführt werden sollen, wenn ein nicht unterstützter Threadabbruch in einem nicht kritischen Codebereich erfolgt.

Bemerkungen

Die CLR-Zuverlässigkeitsinfrastruktur (Common Language Runtime) unterscheidet zwischen Abbrüchen und Ressourcenzuweisungsfehlern in kritischen Codebereichen und in nicht kritischen Codebereichen. Diese Unterscheidung soll es den Hosts ermöglichen, unterschiedliche Richtlinien abhängig davon festzulegen, wo im Code ein Fehler auftritt.

Ein kritischer Codebereich ist jeder Bereich, in dem die CLR nicht garantieren kann, dass sich der Abbruch einer Aufgabe oder die nicht erfolgreiche Ausführung einer Ressourcenanforderung nur auf die aktuelle Aufgabe auswirkt. Wenn beispielsweise eine Aufgabe eine Sperre enthält und HRESULT empfangen wird, was auf einen Fehler bei einer Speicherzuordnungsanforderung hinweist, reicht es nicht aus, diese Aufgabe einfach abzubrechen, um die Stabilität von AppDomain zu gewährleisten, da AppDomain u. U. weitere Aufgaben enthält, die auf dieselbe Sperre warten. Wenn Sie die aktuelle Aufgabe abbrechen möchten, reagieren diese anderen Aufgaben möglicherweise nicht mehr. In einem solchen Fall muss der Host in der Lage sein, das gesamte AppDomain-Element zu entladen, statt potenzielle Instabilität zu riskieren.

Ein nicht kritischer Codebereich hingegen ist ein Bereich, in dem die CLR garantieren kann, dass sich ein Abbruch oder ein Fehler nur auf die Aufgabe auswirkt, bei der der Fehler auftritt.

Die CLR unterscheidet auch zwischen ordnungsgemäßen und nicht ordnungsgemäßen (nicht unterstützten) Abbrüchen. Im Allgemeinen werden bei einem normalen oder ordnungsgemäßen Abbruch alle Anstrengungen unternommen, um Ausnahmebehandlungsroutinen und Finalizer auszuführen, bevor eine Aufgabe abgebrochen wird. Bei einem nicht unterstützten Abbruch hingegen gibt es keine solche Garantie.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: MSCorEE.h

Bibliothek: MSCorEE.dll

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch