CEvent

Un oggetto della classe CEvent rappresenta un "evento" — un oggetto di sincronizzazione che permette un thread notificare un altro che si è verificato un evento. Gli eventi sono utili quando un thread deve sapere quando a espletare il suo compito. Ad esempio, un thread che copia i dati in un archivio dati avrebbe bisogno di ricevere una notifica quando nuovi dati sono disponibili. Utilizzando un oggetto CEvent per notificare il thread copia quando nuovi dati sono disponibili, il thread può espletare il suo compito più presto.

CEvent gli oggetti dispongono di due tipi: manuale e automatica. Un manuale CEvent oggetto rimane nello stato impostato da SetEvent o ResetEvent , fino a quando viene chiamata la funzione di altre. Un oggetto CEvent automatico restituisce automaticamente a uno stato non segnalato (non disponibile) dopo almeno un thread viene rilasciato.

Per utilizzare un oggetto CEvent , costruire l'oggetto CEvent quando è necessario. Specificare il nome dell'evento che si desidera attendere, e che l'applicazione deve inizialmente possederlo. È quindi possibile accedere l'evento quando il costruttore restituisce. Chiamare SetEvent al segnale (rendere disponibile) l'oggetto dell'evento e poi sbloccare quando si è fatto l'accesso alla risorsa controllata.

Un metodo alternativo per l'utilizzo di oggetti CEvent è quello di aggiungere una variabile di tipo CEvent come membro dati alla classe che si desidera regolare. Durante la costruzione dell'oggetto controllato, chiamare il costruttore del membro dati CEvent specificando se l'evento viene segnalato inizialmente, il tipo di evento oggetto si desidera, il nome dell'evento (se verrà utilizzato oltre i limiti del processo) e desiderato gli attributi di protezione.

Per accedere a una risorsa controllata da un oggetto CEvent in questo modo, prima di creare una variabile di tipo CSingleLock tipo CMultiLocko nella funzione di membro accesso della risorsa. Quindi chiamare la funzione di membro dell'oggetto lock Lock (ad esempio, CMultiLock::Lock). A questo punto, il thread sarà o accedere alla risorsa, attendere per essere rilasciato e ottenere l'accesso o aspettare la risorsa per essere rilasciato e time out, non riuscendo a ottenere l'accesso alla risorsa della risorsa. In ogni caso, la vostra risorsa ha avuto accesso in modo thread-safe. Per rilasciare la risorsa, chiamare SetEvent per segnalare l'evento oggetto e quindi utilizzare la funzione di membro dell'oggetto blocco Unlock (ad esempio, CMultiLock::Unlock) oppure consentire all'oggetto di serratura a cadere fuori dell'ambito.

Per ulteriori informazioni sull'utilizzo di oggetti CEvent , vedere l'articolo Multithreading: come utilizzare le classi di sincronizzazione nel manuale del programmatore di Visual C++.

# include lt;afxmt.h>

Membri della classe |nbsp; Classe base | Gerarchia Chart

Campio&nenbsp; Esempio MFC MTGDI

Index