共用方式為


AfxBeginThread

呼叫這個函式以建立新的執行緒。

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

參數

  • pfnThreadProc
    指向背景工作執行緒的控制函式。 不可以是 NULL。 這個函式必須依下列方式宣告:

    UINT __cdecl MyControllingFunction( LPVOID pParam );

  • pThreadClass
    衍生自 CWinThread 之物件的 RUNTIME_CLASS

  • pParam
    要傳遞至控制函式的參數,如 pfnThreadProc 中函式宣告的參數所示。

  • nPriority
    想要的執行緒優先權。 如需可用之優先權的完整清單和說明,請參閱 Windows SDK 的 SetThreadPriority

  • nStackSize
    指定新執行緒的堆疊大小 (以位元組為單位)。 如果是 0,則堆疊大小預設為與建立的執行緒堆疊大小相同。

  • dwCreateFlags
    指定控制執行緒建立作業的其他旗標。 這個旗標可包含兩個值的其中一個:

    • CREATE_SUSPENDED:讓執行緒以暫停計數一為開頭。 如果您想要在執行緒開始執行之前,初始化 CWinThread 物件的任何成員資料 (例如 m_bAutoDelete) 或衍生類別的任何成員,請使用 CREATE_SUSPENDED。 一旦您的初始化已經完成,請使用 CWinThread::ResumeThread 開始執行緒執行。 執行緒在呼叫 CWinThread::ResumeThread 以前都不會執行。

    • 0:建立之後立即啟動執行緒。

  • lpSecurityAttrs
    指向會指定執行緒安全性屬性的 SECURITY_ATTRIBUTES 結構。 如果為 NULL,將使用和建立執行緒相同的安全屬性。 如需這個結構的詳細資訊,請參閱 Windows SDK。

傳回值

新建立執行緒物件的指標,如果發生失敗則為 NULL

備註

第一種形式的 AfxBeginThread 會建立建立背景工作執行緒。 第二個形式會建立可當做使用者介面執行緒或背景工作執行緒的執行緒。

AfxBeginThread 會建立新的 CWinThread 物件,呼叫它的 CreateThread 函式以開始執行執行緒,並傳回執行緒指標。 整個程序都會進行檢查,確保建立的任何部分萬一失敗時,所有物件都會適當地解除配置。 若要結束執行緒,請從執行緒內部呼叫 AfxEndThread,或從背景工作執行緒的控制函式返回。

多執行緒必須由應用程式啟用,否則這個函式會失敗。 如需啟用多執行緒的詳細資訊,請參閱<Visual C++ 編譯器選項>底下的 /MD、/MT、/LD (使用執行階段程式庫)

如需 AfxBeginThread 的詳細資訊,請參閱文件多執行緒:建立背景工作執行緒多執行緒:建立使用者介面執行緒

範例

請參閱 CSocket::Attach 的範例。

需求

標題: afxwin.h

請參閱

參考

AfxGetThread

概念

MFC 巨集和全域