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