
Un oggetto CWinThread rappresenta un thread di esecuzione all'interno di un'applicazione. Il thread di esecuzione principale è solitamente fornito da un oggetto derivato da CWinApp; CWinApp è derivata da CWinThread. Ulteriori oggetti CWinThread consentono più thread all'interno di una determinata applicazione.
Ci sono due tipi di thread che supporta CWinThread : thread di lavoro e il thread dell'interfaccia utente. Thread di lavoro non hanno message pump: ad esempio, un thread che esegue calcoli di sfondo in un'applicazione di foglio di calcolo. Thread dell'interfaccia utente hanno un message pump ed elaborare i messaggi ricevuti dal sistema. CWinApp e classi da essa derivate sono esempi di thread dell'interfaccia utente. Altri thread dell'interfaccia utente può anche essere derivato direttamente da CWinThread.
Gli oggetti della classe CWinThread esistono in genere per tutta la durata del thread. Se si desidera modificare questo comportamento, impostare m_bAutoDelete su FALSE.
La classe CWinThread è necessaria per rendere il codice e MFC completamente thread-safe. Dati locali del thread utilizzati dal framework per mantenere le informazioni specifiche dei thread viene gestiti da oggetti CWinThread . A causa di questa dipendenza da CWinThread per gestire dati locali del thread, è necessario creare qualsiasi thread utilizza MFC da MFC. Ad esempio, un thread creato tramite la funzione di runtime beginthreadex non è possibile utilizzare qualsiasi API MFC.
Per creare un thread, chiamare AfxBeginThread. Ci sono due forme, dipende se si desidera che un thread di lavoro o interfaccia utente. Se si desidera un thread dell'interfaccia utente, passare al AfxBeginThread un puntatore alla CRuntimeClass del tuo CWinThread-classe derivata. Se si desidera creare un thread di lavoro, passare al AfxBeginThread un puntatore alla funzione di controllo e il parametro alla funzione di controllo. Per entrambi i thread di lavoro e i thread dell'interfaccia utente, è possibile specificare i parametri facoltativi che modificano la priorità, dimensione dello stack, bandiere di creazione e gli attributi di protezione. AfxBeginThread restituirà un puntatore all'oggetto CWinThread nuovo.
Invece di chiamare AfxBeginThread, è possibile costruire una CWinThread-oggetto derivato e quindi chiamare CreateThread. Questo metodo di costruzione di due fasi è utile se si desidera riutilizzare l'oggetto CWinThread tra creazione successivi e le interruzioni di esecuzioni di filo.
Per ulteriori informazioni su CWinThread, vedere gli articoli Multithreading con C++ e MFC, Multithreading: creazione di thread dell'interfaccia utente, Multithreading: creazione di thread di lavoro, e Multithreading: come utilizzare le classi di sincronizzazione nel manuale del programmatore di Visual C++.
Membri della classe |nbsp; Classe base | Gerarchia Chart
Campio&nenbsp; Esempio MFC MTGDI
Vedere a&nchenbsp;CWinApp, CCmdTarget