Freigeben über


AfxBeginThread

Rufen Sie diese Funktion auf, um einen neuen Thread zu erstellen.

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  
);

Parameter

  • pfnThreadProc
    Zeigt auf die Steuerungsfunktion für den Arbeitsthread. Darf nicht NULL sein. Diese Funktion muss wie folgt deklariert werden:

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    Die RUNTIME_CLASS eines von CWinThread abgeleiteten Objekts.

  • pParam
    An die Steuerungsfunktion zu übergebender Parameter, wie im Parameter für die Funktionsdeklaration in pfnThreadProc gezeigt.

  • nPriority
    Die gewünschte Priorität des Threads. Eine vollständige Liste der verfügbaren Prioritäten und deren Beschreibung finden Sie unter SetThreadPriority im Windows SDK.

  • nStackSize
    Gibt die Stapelgröße für den neuen Thread in Bytes an. Mit dem Wert 0 wird die Stapelgröße standardmäßig so groß wie die des erstellenden Threads.

  • dwCreateFlags
    Gibt ein zusätzliches Flag an, das die Erstellung des Threads steuert. Dieses Flag kann einen von zwei Werten enthalten:

    • CREATE_SUSPENDED   Der Thread wird mit dem Unterbrechungszähler 1 gestartet. Verwenden Sie CREATE_SUSPENDED, wenn Sie beliebige Memberdaten des CWinThread-Objekts initialisieren möchten, befor der Thread ausgeführt wird, beispielsweise m_bAutoDelete oder Member der abgeleiteten Klasse. Sobald die Initialisierung abgeschlossen ist, verwenden Sie CWinThread::ResumeThread, um den Thread zu starten. Der Thread wird erst ausgeführt, wenn CWinThread::ResumeThread aufgerufen wurde.

    • 0   Der Thread wird unmittelbar nach der Erstellung gestartet.

  • lpSecurityAttrs
    Zeigt auf eine SECURITY_ATTRIBUTES-Struktur, welche die Sicherheitsattribute für den Thread angibt. Mit dem Wert NULL werden die gleichen Sicherheitsattribute verwendet, die der erstellende Thread besitzt. Weitere Informationen zu dieser Struktur finden Sie im Windows SDK.

Rückgabewert

Zeiger auf das neu erstellte Threadobjekt oder NULL, wenn ein Fehler auftritt.

Hinweise

Mit der ersten Form von AfxBeginThread wird ein Arbeitsthread erstellt. Mit der zweiten Form wird ein Thread erstellt, der als Benutzeroberflächenthread oder als Arbeitsthread dienen kann.

AfxBeginThread erstellt ein neues CWinThread-Objekt, ruft dessen CreateThread-Funktion auf, um die Ausführung des Threads zu starten, und gibt einen Zeiger auf den Thread zurück. Während der gesamten Prozedur wird überprüft, ob alle Objekte ordnungsgemäß freigegeben werden, falls ein Teil des Erstellungsprozesses fehlschlagen sollte. Um den Thread zu beenden, rufen Sie AfxEndThread aus dem Thread auf, oder kehren Sie aus der Steuerungsfunktion des Arbeitsthreads zurück.

Multithreading muss durch die Anwendung aktiviert werden, andernfalls erzeugt diese Funktion einen Fehler. Weitere Informationen zum Aktivieren des Multithreadings finden Sie unter /MD, /MT, /LD (Laufzeitbibliothek verwenden) unter Visual C++-Compileroptionen.

Weitere Informationen zu AfxBeginThread finden Sie in Artikel Multithreading: Erstellen von Arbeitsthreads und im Artikel Multithreading: Erstellen von Benutzeroberflächenthreads.

Beispiel

Betrachten Sie das Beispiel für CSocket::Attach.

Anforderungen

Header: afxwin.h

Siehe auch

Referenz

AfxGetThread

Konzepte

MFC-Makros, globale Funktionen und globale Variablen