Поделиться через


Класс CComSafeDeleteCriticalSection

Этот класс предоставляет методы для получения и освобождения владения критически важным объектом раздела.

Синтаксис

class CComSafeDeleteCriticalSection : public CComCriticalSection

Участники

Открытые конструкторы

Имя Описание
CComSafeDeleteCriticalSection::CComSafeDeleteCriticalSection Конструктор.
CComSafeDeleteCriticalSection::~CComSafeDeleteCriticalSection Деструктор

Открытые методы

Имя Описание
CComSafeDeleteCriticalSection::Init Создает и инициализирует объект критического раздела.
CComSafeDeleteCriticalSection::Lock Получает владение объектом критического раздела.
CComSafeDeleteCriticalSection::Term Освобождает системные ресурсы, используемые объектом критического раздела.

Элементы данных

Элемент данных Description
m_bInitialized Помечает, был ли инициализирован внутренний CRITICAL_SECTION объект.

Замечания

CComSafeDeleteCriticalSection производный от класса CComCriticalSection. CComSafeDeleteCriticalSection Однако предоставляет дополнительные механизмы безопасности по CComCriticalSection.

Если экземпляр CComSafeDeleteCriticalSection выходит из области или явно удаляется из памяти, базовый критически важный объект раздела будет автоматически очищаться, если он по-прежнему действителен. Кроме того, метод CComSafeDeleteCriticalSection::Term завершится корректно, если базовый критически важный объект раздела еще не выделен или уже освобожден из памяти.

Дополнительные сведения о вспомогательных классах критических разделов см. в разделе CComCriticalSection .

Иерархия наследования

CComCriticalSection

CComSafeDeleteCriticalSection

Требования

Заголовок: atlcore.h

CComSafeDeleteCriticalSection::CComSafeDeleteCriticalSection

Конструктор.

CComSafeDeleteCriticalSection();

Замечания

Задает элемент данных m_bInitialized значение FALSE.

CComSafeDeleteCriticalSection::~CComSafeDeleteCriticalSection

Деструктор

~CComSafeDeleteCriticalSection() throw();

Замечания

Освобождает внутренний CRITICAL_SECTION объект из памяти, если элемент данных m_bInitialized имеет значение TRUE.

CComSafeDeleteCriticalSection::Init

Вызывает реализацию базового класса Init и задает значение TRUE в m_bInitialized значение TRUE в случае успешного выполнения.

HRESULT Init() throw();

Возвращаемое значение

Возвращает результат CComCriticalSection::Init.

CComSafeDeleteCriticalSection::Lock

Вызывает реализацию базового класса Lock.

HRESULT Lock();

Возвращаемое значение

Возвращает результат CComCriticalSection::Lock.

Замечания

Этот метод предполагает, что элемент данных m_bInitialized имеет значение TRUE при записи. Утверждение создается в сборках отладки, если это условие не выполняется.

Дополнительные сведения о поведении функции см. в разделе CComCriticalSection::Lock.

CComSafeDeleteCriticalSection::m_bInitialized

Помечает, был ли инициализирован внутренний CRITICAL_SECTION объект.

bool m_bInitialized;

Замечания

Элемент m_bInitialized данных используется для отслеживания допустимости базового CRITICAL_SECTION объекта, связанного с классом CComSafeDeleteCriticalSection . Базовый CRITICAL_SECTION объект не будет пытаться освободиться из памяти, если этот флаг не имеет значения TRUE.

CComSafeDeleteCriticalSection::Term

Вызывает реализацию базового класса CComCriticalSection::Term , если внутренний CRITICAL_SECTION объект действителен.

HRESULT Term() throw();

Возвращаемое значение

Возвращает результат CComCriticalSection::Term или S_OK, если m_bInitialized задано значение FALSE при записи.

Замечания

Этот метод безопасно вызывать, даже если внутренний CRITICAL_SECTION объект недопустим. Деструктор этого класса вызывает этот метод, если элемент данных m_bInitialized имеет значение TRUE.

См. также

Класс CComCriticalSection
Общие сведения о классе