
"Подія", являє собою об'єкт клас CEvent — синхронізації об'єктів, що дозволяє один потік, щоб повідомити іншим, що сталася подія. Події є корисним, коли потік повинен знати, коли для виконання свого завдання. Наприклад, що копії даних для архіву даних буде потрібно отримати повідомлення, коли нові дані доступні. За допомогою CEvent об'єкт повідомити копію потоку, коли нові дані доступні, нитка може виконує своє завдання якомога швидше.
CEvent об'єкти мають двох типів: вручну та автоматично. Керівництво CEvent об'єкт залишається у стані, встановити SetEvent або ResetEvent , поки інші функція називається. Автоматичне CEvent об'єкт автоматично повертається до nonsignaled (недоступна) держави, після випустила принаймні один потік.
Використовувати CEvent об'єкт, побудувати об'єкт CEvent , коли це необхідно. Укажіть ім'я події, які ви бажаєте чекати, і що ваша заявка спочатку слід його власником. Потім можна отримати доступ до події, коли Конструктор повертає. Телефонуйте SetEvent сигналу (робити доступними) події об'єкта а потім викликати розблокувати , коли ви зробили доступу до контрольованих ресурсів.
Альтернативний метод, за допомогою об'єктів CEvent , це додати змінна типу CEvent як член даних класу ви хотіли керувати. При будівництві об'єкта, контрольоване, викликаємо Конструктор CEvent компонент даних, вказавши, якщо подія спочатку сигнал, тип події об'єкта, ви хочете, Назва заходу (якщо вона буде використовуватися через процес межі) і бажане атрибути безпеки.
Доступ до ресурсу під контролем CEvent об'єкт в таким чином, спочатку створити змінну з будь-якого типу CSingleLock або CMultiLock у ваш ресурс доступ до член функції. Потім викликати функцію член Блокування блокування об'єкта (наприклад, CMultiLock::Lock). На даний момент ваш потік буде або отримати доступ до ресурсу, чекати ресурс, щоб бути звільнені і отримати доступ або чекати ресурс буде випущений і тайм-аут, не вдається отримати доступ до ресурсу. У будь-якому випадку, ваш ресурс переглядали потік безпечним чином. Звільнити ресурс, зателефонуйте SetEvent сигналу об'єкт подій, і потім використовувати функцію член розблокувати блокування об'єкта (наприклад, CMultiLock::Unlock) або дозволити блокування об'єкта падати з сфера.
Щоб отримати додаткові відомості про використання CEvent об'єкти, перегляньте статтю Multithreading: використання синхронізації класи в Visual C++ програміста керівництво.
# включити lt;afxmt.h>
|&Nbsp членів класу ; Базовий клас | Ієрархічна діаграма
Зразок MFC зразок MTGDI