Sdílet prostřednictvím


AfxBeginThread

Voláním této funkce můžete vytvořit nové vlákno.

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

Parametry

  • pfnThreadProc
    Odkazuje na řídící funkce pro pracovní vlákno.nemůže být NULL.Tato funkce musí být deklarována takto:

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    Třída RUNTIME_CLASS objektu odvozeného od CWinThread.

  • pParam
    Parametr, který má být předán řídící funkci podle informací parametru za účelem deklarace funkce v rámci pfnThreadProc.

  • nPriority
    Požadovaná priorita vlákna.Úplný seznam a popis dostupných priorit naleznete v tématu SetThreadPriority ve Windows SDK.

  • nStackSize
    Určuje velikost zásobníku v bajtech pro nové vlákno.Pokud se hodnota rovná 0, výchozí velikost zásobníku bude stejná jako velikost zásobníku u vytvářeného vlákna.

  • dwCreateFlags
    Určuje další příznak, který řídí vytvoření vlákna.Tento příznak může obsahovat jednu ze dvou hodnot:

    • CREATE_SUSPENDED   Spustit vlákno s pozastaveným počtem jedna.Použijte CREATE_SUSPENDED, pokud chcete inicializovat všechna data členů objektu CWinThread, jako například m_bAutoDelete nebo všechny členy odvozené třídy před spuštěním podprocesu.Po dokončení inicializace aplikace spusťte vlákno pomocí příkazu CWinThread::ResumeThread.Vlákno nebude spuštěno až do volání CWinThread::ResumeThread.

    • 0   Spuštění vlákna ihned po vytvoření.

  • lpSecurityAttrs
    Odkazuje na strukturu SECURITY_ATTRIBUTES, která určuje atributy zabezpečení pro vlákno.Pokud je NULL, stejné atributy zabezpečení jako u vytvářeného vlákna budou použity.Další informace o této struktuře získáte v tématu Windows SDK.

Vrácená hodnota

Ukazatel na nově vytvořený objekt vlákna, nebo NULL, pokud dojde k chybě.

Poznámky

První formulář AfxBeginThread vytvoří pracovní vlákno.Druhý formulář vytvoří vlákno, které může sloužit jako vlákno uživatelského rozhraní nebo jako pracovní vlákno.

AfxBeginThread vytvoří nový objekt CWinThread, zavolá jeho funkci CreateThread, která spustí provádění vlákna, a vrátí ukazatel na vlákno.Kontroly jsou prováděny v celém procesu, aby bylo zajištěno, že všechny objekty jsou správně uvolněny v případě, že selže některá část vytvoření.Pokud chcete ukončit vlákno, volejte AfxEndThread z vlákna nebo proveďte návrat z řídící funkce pracovního podprocesu.

Multithreading musí být povolen v aplikaci, jinak dojde k selhání této funkce.Další informace o povolení multithreadingu naleznete v /MD, /MT, /LD (Použít běhovou knihovnu) v části Možnosti kompilátoru Visual C++.

Další informace o AfxBeginThread, naleznete v článcích Multithreading: vytváření pracovních vláken a Multithreading: vytváření vláken uživatelského rozhraní.

Příklad

Viz příklad pro CSocket::Attach.

Požadavky

Hlavička: afxwin.h

Viz také

Referenční dokumentace

AfxGetThread

Koncepty

MFC – makra a globální prvky