CEvent

Um objeto da classe CEvent representa um "evento" — um objeto de sincronização que permite que um thread notificar outro que um evento ocorreu. Eventos são úteis quando um thread precisa saber quando executar sua tarefa. Por exemplo, um thread que copia dados para um arquivo de dados precisaria ser notificado quando novos dados estão disponíveis. Usando um objeto CEvent para notificar o thread de copiar quando novos dados estão disponíveis, o thread pode executar sua tarefa logo que possível.

CEvent objetos têm dois tipos: manual e automática. Um objeto de CEvent manual permanece no estado definido pelo SetEvent ou ResetEvent até a outra função é chamada. Um objeto de CEvent automático automaticamente retorna para um não sinalizado estado (não disponível) após pelo menos um thread seja liberado.

Para usar um objeto de CEvent , construa o objeto CEvent quando ela é necessária. Especifique o nome do evento que deseja aguardar, e que seu aplicativo deve inicialmente ele próprio. Você pode acessar o evento quando o construtor retorna. Chamar SetEvent ao sinal (tornar disponível) o objeto de evento e, em seguida, chamar Desbloquear quando tiver terminado acessar o recurso controlado.

Um método alternativo para usar objetos de CEvent é adicionar uma variável do tipo CEvent como um membro de dados para a classe que você deseja controlar. Durante a construção do objeto controlado, chamar o Construtor do membro CEvent dados especificando se o evento é sinalizado inicialmente, o tipo de evento objeto você quer, o nome do evento (se ele será usado através de limites de processo) e desejar atributos de segurança.

Para acessar um recurso controlado por um objeto de CEvent dessa maneira, primeiro criar uma variável de qualquer tipo CSingleLock ou digite CMultiLock na função de membro de acesso do recurso. Em seguida, chame função de membro do objeto bloqueio Lock (por exemplo, CMultiLock::Lock). Neste ponto, seu thread irá acessar o recurso, espere para o recurso ser liberado e obter acesso ou aguarde o recurso para ser lançado e o tempo limite, falhando obter acesso ao recurso. Em qualquer caso, seu recurso foi acessado em uma forma thread-safe. Para versão o recurso, chamar SetEvent para sinalizar o objeto de evento e, em seguida, use a função de membro do objeto bloqueio Unlock (por exemplo, CMultiLock::Unlock), ou permitir que o objeto de bloqueio para ficarem fora do escopo.

Para obter mais informações sobre usando objetos de CEvent , consulte o artigo Multithreading: como usar as Classes de sincronização no Guia do programador do Visual C++.

# include lt;afxmt.h>

Membros da classe |nbsp; Classe base | Gráfico de hierarquia

Amostra  MFC exemplo MTGDI

Index