Перечисление EClrOperation
Описывает набор операций, для которых узел может применять действия политики.
Синтаксис
typedef enum {
OPR_ThreadAbort,
OPR_ThreadRudeAbortInNonCriticalRegion,
OPR_ThreadRudeAbortInCriticalRegion,
OPR_AppDomainUnload,
OPR_AppDomainRudeUnload,
OPR_ProcessExit,
OPR_FinalizerRun
} EClrOperation;
Элементы
Член | Описание |
---|---|
OPR_AppDomainRudeUnload |
Узел может указать действия политики, которые будут выполняться при AppDomain выгрузке в неграциозном (грубом) способе. |
OPR_AppDomainUnload |
Узел может указать действия политики, которые будут выполняться при AppDomain выгрузке . |
OPR_FinalizerRun |
Узел может указать действия политики, которые будут выполняться при запуске методов завершения. |
OPR_ProcessExit |
Узел может указать действия политики, которые будут выполняться при завершении процесса. |
OPR_ThreadAbort |
Узел может указать действия политики, которые будут выполняться при прерывании потока. |
OPR_ThreadRudeAbortInCriticalRegion |
Узел может указать действия политики, которые будут выполняться при прерывании грубого потока в критической области кода. |
OPR_ThreadRudeAbortInNonCriticalRegion |
Узел может указать действия политики, которые будут выполняться при прерывании грубого потока в некритичной области кода. |
Комментарии
Инфраструктура обеспечения надежности среды CLR позволяет различать прерывания и сбои выделения ресурсов, которые происходят в критически важных областях кода и в некритических областях кода. Это различие позволяет узлам задавать различные политики в зависимости от того, где происходит сбой в коде.
Критически важной областью кода является любое пространство, где среда CLR не может гарантировать, что прерывание задачи или неудача при выполнении запроса ресурсов повлияет только на текущую задачу. Например, если задача удерживает блокировку и получает HRESULT, которая указывает на сбой при выполнении запроса на выделение памяти, недостаточно просто прервать задачу, чтобы обеспечить стабильность AppDomain, так как AppDomain может содержать другие задачи, ожидающие той же блокировки. Отказ от текущей задачи может привести к тому, что другие задачи перестают отвечать на запросы. В таком случае узлу требуется возможность выгрузить весь AppDomain объект, а не рисковать потенциальной нестабильностью.
С другой стороны, некритическая область кода — это регион, в котором среда CLR может гарантировать, что прерывание или сбой повлияет только на задачу, в которой возникает ошибка.
Среда CLR также различает изящные и неграциозные (грубые) прерывания. Как правило, обычное или корректное прерывание делает все возможное, чтобы запустить подпрограммы обработки исключений и методы завершения перед прерыванием задачи, в то время как грубое прерывание не дает таких гарантий.
Требования
Платформы: см. раздел Требования к системе.
Заголовка: MSCorEE.h
Библиотека: MSCorEE.dll
версии платформа .NET Framework: доступно с версии 2.0.