EClrOperation — Wyliczenie

Opisuje zestaw operacji, dla których host może stosować akcje zasad.

Składnia

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

Elementy członkowskie

Członek Opis
OPR_AppDomainRudeUnload Host może określać akcje zasad, które mają zostać podjęte, gdy obiekt AppDomain zostanie zwolniony w sposób niegrzeczny (niegrzeczny).
OPR_AppDomainUnload Host może określać akcje zasad, które mają zostać wykonane po AppDomain rozładowaniu.
OPR_FinalizerRun Host może określić akcje zasad do wykonania po uruchomieniu finalizatorów.
OPR_ProcessExit Host może określić akcje zasad do wykonania po zakończeniu procesu.
OPR_ThreadAbort Host może określić akcje zasad do wykonania po przerwaniu wątku.
OPR_ThreadRudeAbortInCriticalRegion Host może określić akcje zasad do wykonania, gdy niegrzeczny wątek występuje w krytycznym regionie kodu.
OPR_ThreadRudeAbortInNonCriticalRegion Host może określić akcje zasad, które mają zostać wykonane, gdy niegrzeczny wątek występuje w niekrytycznym regionie kodu.

Uwagi

Infrastruktura niezawodności środowiska uruchomieniowego języka wspólnego (CLR) rozróżnia przerwania i błędy alokacji zasobów, które występują w krytycznych regionach kodu, a tymi, które występują w niekrytycznych regionach kodu. To rozróżnienie ma na celu umożliwienie hostom ustawiania różnych zasad w zależności od tego, gdzie występuje błąd w kodzie.

Krytyczny region kodu to dowolne miejsce, w którym CLR nie może zagwarantować przerwania zadania lub nieukończenia żądania zasobów będzie miało wpływ tylko na bieżące zadanie. Jeśli na przykład zadanie trzyma blokadę i odbiera hrESULT, który wskazuje błąd podczas wykonywania żądania alokacji pamięci, niewystarczające jest po prostu przerwanie tego zadania w celu zapewnienia stabilności AppDomainobiektu , ponieważ AppDomain może zawierać inne zadania oczekujące na tę samą blokadę. Porzucenie bieżącego zadania może spowodować, że inne zadania przestaną odpowiadać. W takim przypadku host musi mieć możliwość zwolnienia całej AppDomain , a nie potencjalnej niestabilności.

Z drugiej strony region kodu niekrytyczny to region, w którym clR może zagwarantować przerwanie lub awarię tylko na zadanie, na którym wystąpi błąd.

CLR rozróżnia również między łaskawy i niewdzięczny (niegrzeczny) przerywania. Ogólnie rzecz biorąc, normalne lub wdzięku przerwanie sprawia, że każdy wysiłek, aby uruchomić procedury obsługi wyjątków i finalizatorów przed przerwaniem zadania, podczas gdy niegrzeczna przerwanie nie daje takich gwarancji.

Wymagania

Platformy: Zobacz Wymagania systemowe.

Nagłówka: MSCorEE.h

Biblioteka: MSCorEE.dll

wersje .NET Framework: dostępne od wersji 2.0

Zobacz też