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