Freigeben über


EClrOperation

Aktualisiert: November 2007

Beschreibt die Operationen, für die ein Host Richtlinienaktionen anwenden kann.

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 eine AppDomain nicht ordnungsgemäß (ordnungswidrig) entladen wird.

OPR_AppDomainUnload

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn eine AppDomain entladen wird.

OPR_FinalizerRun

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn Finalizer ausgeführt werden.

OPR_ProcessExit

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn der Prozess beendet wird.

OPR_ThreadAbort

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn ein Thread abgebrochen wird.

OPR_ThreadRudeAbortInCriticalRegion

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn ein Thread in einem kritischen Codebereich ordnungswidrig abgebrochen wird.

OPR_ThreadRudeAbortInNonCriticalRegion

Der Host kann Richtlinienaktionen angeben, die durchgeführt werden sollen, wenn ein Thread in einem unkritischen Codebereich ordnungswidrig abgebrochen wird.

Hinweise

Die zuverlässige Common Language Runtime (CLR)-Infrastruktur unterscheidet zwischen Abbrüchen und Fehlern bei der Ressourcenzuordnung, die in kritischen Codebereichen auftreten, und solchen, die in unkritischen Codebereichen auftreten. Diese Unterscheidung soll es Hosts ermöglichen, abhängig vom Codebereich, in dem ein Fehler auftritt, verschiedene Richtlinien festzulegen.

Bei einem kritischen Codebereich handelt es sich um einen Bereich, in dem die CLR nicht garantieren kann, dass der Abbruch einer Aufgabe oder das Beenden einer Ressourcenanforderung sich nur auf die aktuelle Aufgabe auswirkt. Wenn eine Aufgabe beispielsweise eine Sperre besitzt und bei einer Speicherreservierungsanforderung ein HRESULT empfängt, das auf einen Fehler hinweist, reicht es nicht aus, diese Aufgabe einfach abzubrechen, um die Stabilität der AppDomain sicherzustellen, da die AppDomain andere Aufgaben enthalten kann, die auf die gleiche Sperre warten. Wenn die aktuelle Aufgabe abgebrochen wird, kann dies dazu führen, dass die anderen Aufgaben nicht mehr reagieren (oder "hängen bleiben"). In einem solchen Fall muss der Host die gesamte AppDomain entladen können, anstatt eine mögliche Instabilität zu riskieren.

Demgegenüber handelt es sich bei einem unkritischen Codebereich um einen Bereich, in dem die CLR garantieren kann, dass sich ein Abbruch oder Fehler nur auf die Aufgabe auswirkt, in der der Fehler aufgetreten ist.

Die CLR unterscheidet auch zwischen ordnungsgemäßen und ordnungswidrigen Abbrüchen. Im Allgemeinen wird bei einem normalen oder ordnungsgemäßen Abbruch immer versucht, die Ausnahmebehandlungsroutinen und Finalizer auszuführen, bevor eine Aufgabe beendet wird. Dies wird bei einem ordnungswidrigen Abbruch nicht garantiert.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: MSCorEE.idl

Bibliothek: MSCorEE.dll

.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Siehe auch

Referenz

EClrFailure

EPolicyAction

ICLRPolicyManager

IHostPolicyManager

Weitere Ressourcen

Hosten von Enumerationen