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 开始挂起计数为 1 的线程。 如果要在线程开始运行之前初始化 CWinThread 对象的任何成员数据,如 m_bAutoDelete 或您的派生类的任何成员,请使用 CREATE_SUSPENDED。 完成初始化后,使用 CWinThread::ResumeThread 使线程开始运行。 直到调用 CWinThread::ResumeThread,线程才会执行。
0 创建后立即启动线程。
lpSecurityAttrs
指向安全特性结构,此结构为线程指定安全特性。 如果为 NULL,则将使用与创建线程相同的安全特性。 有关该结构的更多信息,请参见 Windows SDK。
返回值
如果失败,指针则指向新建的线程对象或 NULL。
备注
AfxBeginThread 的第一个窗体创建辅助线程。 第二个窗体创建了一个可用作用户界面线程或辅助线程的线程。
AfxBeginThread 可创建新的 CWinThread 对象,调用其 CreateThread 函数以开始执行线程,然后将指针返回到线程。 在整个过程中进行检查,确保假如创建过程的任何部分出现故障,所有对象都能被正确地解除分配。 若想关闭线程,请从线程内调用 AfxEndThread,或从辅助线程的控制函数返回。
应用程序必须启用多线程;否则此函数将失败。 有关启用多线程的更多信息,请参考 Visual C++ 编译器选项下的 /MD、/MT、/LD(使用运行库)。
有关 AfxBeginThread 的更多信息,请参见文章 多线程:创建辅助线程和多线程:创建用户界面线程。
示例
请参见 CSocket::Attach 的示例。
要求
标头: afxwin.h