Partager via


AfxBeginThread

Appelez cette fonction pour créer un nouveau thread.

CWinThread* AfxBeginThread( 
   AFX_THREADPROC pfnThreadProc, 
   LPVOID pParam, 
   int nPriority = THREAD_PRIORITY_NORMAL, 
   UINT nStackSize = 0, 
   DWORD dwCreateFlags = 0, 
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL  
); 
CWinThread* AfxBeginThread( 
   CRuntimeClass* pThreadClass, 
   int nPriority = THREAD_PRIORITY_NORMAL, 
   UINT nStackSize = 0, 
   DWORD dwCreateFlags = 0, 
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL  
);

Paramètres

  • pfnThreadProc
    Pointe vers la fonction de contrôle du thread de travail. Ne peut pas être NULL. Cette fonction doit être déclarée comme suit :

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    RUNTIME_CLASS d'un objet dérivé de CWinThread.

  • pParam
    Paramètre à passer à la fonction de contrôle comme indiqué dans le paramètre de la fonction de déclaration dans pfnThreadProc.

  • nPriority
    La priorité voulue du thread. Pour obtenir une liste complète et une description des priorités disponibles, consultez SetThreadPriority dans le Kit de développement logiciel Windows.

  • nStackSize
    Spécifie la taille en octets de la pile du nouveau thread. Si la valeur est 0, la taille de la pile équivaut par défaut à celle du thread parent.

  • dwCreateFlags
    Spécifie un indicateur supplémentaire qui contrôle la création du thread. Cet indicateur peut contenir l'une des deux valeurs :

    • CREATE_SUSPENDED   Démarre le thread avec un compteur de suspension à un. Utilisez CREATE_SUSPENDED pour initialiser un membre de données de l'objet CWinThread, tel que m_bAutoDelete ou n'importe quel membre de votre classe dérivée, avant que le thread ne démarre. Une fois l'initialisation terminée, utilisez CWinThread::ResumeThread pour démarrer l'exécution du thread. Le thread ne s'exécute pas tant que CWinThread::ResumeThread n'a pas été appelé.

    • 0   Démarre le thread immédiatement après sa création.

  • lpSecurityAttrs
    Pointe vers une structure SECURITY_ATTRIBUTES qui spécifie les attributs de sécurité du thread. Si NULL, les mêmes attributs de sécurité que le thread de création sont utilisés. Pour plus d'informations sur cette structure, consultez le Kit de développement logiciel Windows.

Valeur de retour

Pointeur vers l'objet thread venant d'être créé, ou la valeur NULL si une erreur se produit.

Notes

La première forme de AfxBeginThread crée un thread de travail. Le deuxième formulaire crée un thread qui peut servir comme thread d'interface utilisateur ou comme thread de travail.

AfxBeginThread crée un objet CWinThread, appelle sa fonction CreateThread pour lancer l'exécution du thread et retourne un pointeur au thread. Des vérifications sont effectuées tout au long de la procédure pour s'assurer que tous les objets sont libérés correctement au cas où une partie de la création échouerait. Pour terminer le thread, appelez AfxEndThread depuis le thread, ou procédez à un retour à partir de la fonction de contrôle du thread de travail.

Le multithreading doit être activé par l'application ; sinon, cette fonction échoue. Pour plus d'informations sur l'activation du multithreading, consultez /MD, /MT, /LD (Utiliser la bibliothèque Runtime) sous Options du compilateur Visual C++.

Pour plus d'informations sur AfxBeginThread, consultez les articles Multithreading : création de threads de travail et Multithreading : création de threads d'interface utilisateur.

Exemple

Consultez l'exemple de CSocket::Attach.

Configuration requise

En-tête : afxwin.h

Voir aussi

Référence

AfxGetThread

Concepts

macro MFC et Globals