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.