CEvent

Объект класса CEvent представляет "событие", — объект синхронизации, которая позволяет одному потоку для уведомления другой, что произошло событие. События полезны, когда поток необходимо знать, когда следует выполнять свою задачу. Например поток, который копирует данные в архив данных необходимо будет получать уведомление, когда новые данные недоступны. С помощью объекта CEvent для уведомления копирования поток новых данных, поток может выполнять свою задачу как можно скорее.

CEvent объекты имеют два типа: ручной и автоматический. Руководство CEvent объект находится в государстве, установленные SetEvent или ResetEvent до тех пор, пока другая функция вызывается. Объект автоматического CEvent автоматически возвращается в несигнальное состояние (недоступно) после выпуска по крайней мере один поток.

Использовать объект CEvent , создайте объект CEvent , когда это необходимо. Укажите имя события, вы желаете ждать, и что ваше приложение должно сначала его владельцем. Затем можно вызвать событие, когда конструктор возвращает. Звоните SetEvent сигнал (предоставлять) объект события и затем вызывать Unlock после завершения доступ к контролируемым ресурсов.

Альтернативный метод для использования CEvent объектов является добавление переменную типа CEvent качестве члена данных класса для элемента управления. В ходе строительства управляемого объекта, вызовите конструктор элемента данных CEvent , указав, если событие изначально сигнальным, тип события объекта вы хотите, имя события (если он будет использоваться между границами процессов) и желаемого атрибуты безопасности.

Для доступа к ресурсу, контролируемом CEvent объекта таким образом, сначала создайте переменную любого типа CSingleLock или CMultiLock в функции-члена доступа вашего ресурса. Затем вызовите функцию-член Lock объекта блокировки (например, CMultiLock::Lock). На данный момент ваш поток будет либо получить доступ к ресурсу, подождать для ресурса будет выпущен и получить доступ, или для ресурса будет выпущен и время ожидания, неспособность получить доступ к ресурсу. В любом случае ваш ресурс к поточно-образом. Чтобы освободить ресурс, звоните SetEvent сигнал объекту события, и затем использовать функцию-член объекта блокировки Unlock (например, CMultiLock::Unlock), или разрешить блокировку объекта выпадают из сферы.

Для получения дополнительных сведений об использовании объектов CEvent , см. статью Многопоточность: как использовать классы синхронизации в Руководстве по Visual C++ программист.

# include lt;afxmt.h>

Члены класса |nbsp; Базовый класс | Иерархическая схема

Пример  Образца MFC MTGDI

Index