
Un objet CWinThread représente un thread d'exécution dans une application. Le principal thread d'exécution est généralement fourni par un objet dérivé de CWinApp; CWinApp est dérivée de CWinThread. Des objets CWinThread supplémentaires permettent à plusieurs threads dans une application donnée.
Il existe deux types généraux de threads qui prend en charge les CWinThread : threads de travail et de threads d'interface utilisateur. Threads de travail n'ont aucune pompe de messages : par exemple, un thread qui effectue des calculs de base dans une application de feuille de calcul. Threads d'interface utilisateur ont une pompe de messages et traitent les messages reçus par le système. CWinApp et classes dérivées sont des exemples de threads d'interface utilisateur. Autres threads d'interface utilisateur peuvent aussi être dérivés directement de CWinThread.
Objets de la classe CWinThread existent généralement pendant toute la durée du thread. Si vous souhaitez modifier ce comportement, définissez m_bAutoDelete sur FALSE.
La classe de CWinThread est nécessaire pour rendre votre code et MFC complètement thread-safe. Données locales de thread utilisées par le cadre pour maintenir les informations spécifiques au thread sont gérées par des objets CWinThread . En raison de cette dépendance de CWinThread pour gérer les données locales, n'importe quel thread qui utilise MFC doit être créé par les MFC. Par exemple, un thread créé par la fonction run-time _beginthreadex ne peut pas utiliser les API de MFC.
Pour créer un thread, appelez AfxBeginThread. Il y a deux formes, selon que vous vouliez un thread d'interface utilisateur ou de travailleur. Si vous voulez un thread d'interface utilisateur, passer à AfxBeginThread un pointeur vers le CRuntimeClass de votre CWinThread-classe dérivée. Si vous souhaitez créer un thread de travail, passez à AfxBeginThread , un pointeur vers la fonction de contrôle et le paramètre de la fonction de contrôle. Pour les threads de travail et de threads d'interface utilisateur, vous pouvez spécifier des paramètres facultatifs que modifier la priorité, la taille de pile, les drapeaux de la création et les attributs de sécurité. AfxBeginThread retourne un pointeur vers votre nouvel objet CWinThread.
Au lieu d'appeler AfxBeginThread, vous pouvez construire un CWinThread-objet dérivé et puis appelez CreateThread. Cette méthode de construction de deux étages est utile si vous souhaitez réutiliser l'objet CWinThread entre création successive et cessations d'exécutions de thread.
Pour plus d'informations sur CWinThread, consultez les articles Multithreading avec C++ et MFC, Multithreading : création d'Interface utilisateur Threads, Multithreading : création de Threads de travail, et Multithreading : comment utiliser les Classes de synchronisation dans le Guide du programmeur Visual C++.
Membres de la classe |nbsp ; Classe de base | Graphique de la hiérarchie
Écha&ntillonnbsp ; Exemple MFC MTGDI
Voir aussi  ;CWinApp, CCmdTarget