Classe CWinThread
Rappresenta un thread di esecuzione all'interno di un'applicazione.
class CWinThread : public CCmdTarget
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruisce un oggetto CWinThread. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Avvia l'esecuzione di un oggetto CWinThread. |
|
Override da liberare quando il thread termina. |
|
Recupera un puntatore alla finestra principale del thread. |
|
Ottiene la priorità del thread corrente. |
|
Override per eseguire l'inizializzazione dell'istanza del thread. |
|
Controlla i messaggi speciali. |
|
Override per eseguire l'elaborazione in fase di inattività specifica di. |
|
Invia un messaggio a un altro oggetto CWinThread. |
|
Filtri dei messaggi prima che vengano inviati alle funzioni Windows TranslateMessage e DispatchMessage. |
|
Alcuni messaggi di interruzione prima che raggiungano l'applicazione. |
|
Intercetti tutte le eccezioni non gestite generate dal messaggio e i gestori comandi del thread. |
|
Contiene il ciclo di messaggi di thread. |
|
Decrementa il conteggio di sospensione di un thread. |
|
Funzione di controllo per i thread con un message pump. Override per personalizzare il ciclo di messaggi predefinito. |
|
Stabilire la priorità del thread corrente. |
|
Incrementa il conteggio di sospensione di un thread. |
Operatori pubblici
Nome |
Descrizione |
---|---|
Recupera l'handle dell'oggetto CWinThread. |
Membri dati pubblici
Nome |
Descrizione |
---|---|
Specifica se eliminare l'oggetto alla chiusura del thread. |
|
Handle per il thread corrente. |
|
ID del thread corrente. |
|
Puntatore alla finestra principale dell'applicazione contenitore quando un server OLE è attivo sul posto. |
|
Contiene un puntatore alla finestra principale dell'applicazione. |
Note
Il thread di esecuzione principale in genere fornito da un oggetto derivato da CWinApp; CWinApp è derivato da CWinThread. Gli oggetti aggiuntivi CWinThread consentono più thread all'interno di un'applicazione specificata.
Esistono due tipi di carattere generale su thread che CWinThread supporta: thread di lavoro e thread di interfaccia utente. I thread di lavoro non hanno message pump: ad esempio, un thread che esegue calcoli in background in un'applicazione del foglio di lavoro. I thread dell'interfaccia utente hanno messaggi di processo e di un message pump ricevuti dal sistema. CWinApp e le classi derivate da sono esempi di thread di interfaccia utente. Altri thread dell'interfaccia utente possono essere derivati direttamente da CWinThread.
Gli oggetti di classe CWinThread in genere disponibili per la durata del thread. Se si desidera modificare questo comportamento, impostare m_bAutoDelete a FALSE.
La classe CWinThread è necessaria per rendere il codice e MFC completamente thread-safe. I dati di thread locali utilizzati dal framework per gestire le informazioni specifiche dei thread vengono gestiti dagli oggetti CWinThread. A causa di questa dipendenza da CWinThread per gestire i dati di thread locale, un thread che utilizza MFC deve essere creato da MFC. Ad esempio, un thread creato dalla funzione in esecuzione _beginthread, _beginthreadex non può utilizzare qualsiasi MFC API.
Per creare un thread, chiamare AfxBeginThread. Esistono due form, come se si desidera che un thread di lavoro o un thread di interfaccia utente. Se si desidera che un thread dell'interfaccia utente, passare a AfxBeginThread un puntatore a CRuntimeClass del CWinThreadclasse derivata da. Se si desidera creare un thread di lavoro, passare a AfxBeginThread un puntatore alla funzione di controllo e il parametro della funzione di controllo. Per entrambi i thread di lavoro e thread dell'interfaccia utente, è possibile specificare i parametri facoltativi che modificano la priorità, la dimensione dello stack, i flag di creazione e gli attributi di sicurezza. AfxBeginThread restituirà un puntatore al nuovo oggetto CWinThread.
Anziché chiamare AfxBeginThread, è possibile costruire CWinThreadoggetto derivato da e quindi chiamare CreateThread. Questo metodo in due fasi della costruzione è utile se si desidera riutilizzare l'oggetto CWinThread tra la creazione e le chiusure successive di esecuzione del thread.
Per ulteriori informazioni su CWinThread, vedere gli articoli Multithreading con C++ e MFC, multithreading: Creare i thread dell'interfaccia utente, multithreading: Creazione di thread di lavoroe multithreading: Utilizzo delle classi di sincronizzazione.
Gerarchia di ereditarietà
CWinThread
Requisiti
Intestazione: afxwin.h