Перечисление 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 также проводится различие между надлежащими и ненадлежащими (принудительными) прерываниями. Как правило, при обычном, или надлежащем, прерывании предпринимаются все возможные действия для запуска процедур обработки исключений и вызова методов завершения перед его выполнением, в то время как ненадлежащее прерывание не дает таких гарантий.
Требования
Платформы: см. раздел Требования к системе для .NET Framework.
Заголовок: MSCorEE.h
Библиотека: MSCorEE.dll
Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0