Condividi tramite


AfxBeginThread

Chiamare la funzione per creare un nuovo 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 
);

Parametri

  • pfnThreadProc
    Punta alla funzione di controllo per il thread di lavoro.Non è possibile NULL.Questa funzione deve essere dichiarata come segue:

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    RUNTIME_CLASS di un oggetto derivato da CWinThread.

  • pParam
    Parametro da passare alla funzione di controllo come illustrato nel parametro alla dichiarazione di funzione in pfnThreadProc.

  • nPriority
    La priorità desiderata per il thread.Per un elenco completo e una descrizione delle priorità disponibili, vedere SetThreadPriority in Windows SDK.

  • nStackSize
    Specifica la dimensione in byte dello stack per il nuovo thread.Se 0, le impostazioni predefinite di dimensione dello stack allo stesso stack di dimensione del thread di creazione.

  • dwCreateFlags
    Specifica un flag aggiuntivo che controlla la creazione di thread.Questo flag può contenere uno dei due valori:

    • Inizio diCREATE_SUSPENDED il thread con un conteggio di sospensione di uno.Utilizzo CREATE_SUSPENDED se si desidera inizializzare i dati dei membri dell'oggetto di CWinThread, come m_bAutoDelete o qualsiasi membri della classe derivata, prima che il thread avviare il processo.Una volta che la inizializzazione completata, utilizzare CWinThread::ResumeThread per avviare l'esecuzione del thread.Il thread non viene eseguita finché non viene chiamato CWinThread::ResumeThread.

    • Inizio di0 il thread immediatamente dopo la creazione.

  • lpSecurityAttrs
    Punta a una struttura di SECURITY_ATTRIBUTES specificando gli attributi di sicurezza per il thread.Se NULL, gli stessi attributi di sicurezza del thread di creazione verrà utilizzato.Per ulteriori informazioni sulla struttura, vedere Windows SDK.

Valore restituito

Puntatore all'oggetto appena creato, il thread o NULL se si verifica un errore.

Note

Il primo form di AfxBeginThread creato un thread di lavoro.Il secondo form creato un thread che può servire come thread dell'interfaccia utente o da thread di lavoro.

AfxBeginThread crea un nuovo oggetto di CWinThread, chiama la relativa funzione di CreateThread per avviare il thread e restituisce un puntatore al thread.Nel corso della routine vengono effettuati controlli per assicurare che tutti gli oggetti siano resi disponibili in modo corretto, nell'eventualità che una parte della creazione non riuscisse.Per interrompere il thread, chiamare AfxEndThread dal thread, o restituire dalla funzione di controllo dei thread di lavoro.

Il multithreading deve essere attivata dall'applicazione; in caso contrario, la funzione non riuscirà.Per ulteriori informazioni sull'abilitazione del multithreading, fare riferimento a /MD, /MT, /LD (Utilizza la libreria di runtime) nelle opzioni del compilatore di Visual C++.

Per ulteriori informazioni su AfxBeginThread, vedere gli articoli Multithreading: Creazione di thread di lavoro e Multithreading: Creare i thread dell'interfaccia utente.

Esempio

Vedere l'esempio relativo CSocket::Attach.

Requisiti

Header: afxwin.h

Vedere anche

Riferimenti

AfxGetThread

Concetti

Macro MFC e Globals