Condividi tramite


Classe CWinThread

Rappresenta un thread di esecuzione all'interno di un'applicazione.

class CWinThread : public CCmdTarget

Membri

Costruttori pubblici

Nome

Descrizione

CWinThread::CWinThread

Costruisce un oggetto CWinThread.

Metodi pubblici

Nome

Descrizione

CWinThread::CreateThread

Avvia l'esecuzione di un oggetto CWinThread.

CWinThread::ExitInstance

Override da liberare quando il thread termina.

CWinThread::GetMainWnd

Recupera un puntatore alla finestra principale del thread.

CWinThread::GetThreadPriority

Ottiene la priorità del thread corrente.

CWinThread::InitInstance

Override per eseguire l'inizializzazione dell'istanza del thread.

CWinThread::IsIdleMessage

Controlla i messaggi speciali.

CWinThread::OnIdle

Override per eseguire l'elaborazione in fase di inattività specifica di.

CWinThread::PostThreadMessage

Invia un messaggio a un altro oggetto CWinThread.

CWinThread::PreTranslateMessage

Filtri dei messaggi prima che vengano inviati alle funzioni Windows TranslateMessage e DispatchMessage.

CWinThread::ProcessMessageFilter

Alcuni messaggi di interruzione prima che raggiungano l'applicazione.

CWinThread::ProcessWndProcException

Intercetti tutte le eccezioni non gestite generate dal messaggio e i gestori comandi del thread.

CWinThread::PumpMessage

Contiene il ciclo di messaggi di thread.

CWinThread::ResumeThread

Decrementa il conteggio di sospensione di un thread.

CWinThread::Run

Funzione di controllo per i thread con un message pump. Override per personalizzare il ciclo di messaggi predefinito.

CWinThread::SetThreadPriority

Stabilire la priorità del thread corrente.

CWinThread::SuspendThread

Incrementa il conteggio di sospensione di un thread.

Operatori pubblici

Nome

Descrizione

HANDLE di CWinThread::operator

Recupera l'handle dell'oggetto CWinThread.

Membri dati pubblici

Nome

Descrizione

CWinThread::m_bAutoDelete

Specifica se eliminare l'oggetto alla chiusura del thread.

CWinThread::m_hThread

Handle per il thread corrente.

CWinThread::m_nThreadID

ID del thread corrente.

CWinThread::m_pActiveWnd

Puntatore alla finestra principale dell'applicazione contenitore quando un server OLE è attivo sul posto.

CWinThread::m_pMainWnd

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à

CObject

CCmdTarget

CWinThread

Requisiti

Intestazione: afxwin.h

Vedere anche

Riferimenti

Classe CCmdTarget

Grafico delle gerarchie

Classe CWinApp

Classe CCmdTarget