在 MFC 中,可以使用CWinThread::WaitForSingleObject方法来等待子线程的结束。以下是一个示例代码:
// 创建并启动子线程的函数
void StartMyThread()
{
CWinThread* pThread = AfxBeginThread(RUNTIME_CLASS(CMyThread));
// 设置线程优先级
pThread->SetThreadPriority(THREAD_PRIORITY_NORMAL);
// 等待子线程结束
pThread->WaitForSingleObject();
}
class CMyThread : public CWinThread
{
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
protected:
DECLARE_MESSAGE_MAP()
};
BOOL CMyThread::InitInstance()
{
// 在这里执行耗时操作
return TRUE;
}
int CMyThread::ExitInstance()
{
// 在这里清理资源
return 0;
}
BEGIN_MESSAGE_MAP(CMyThread, CWinThread)
END_MESSAGE_MAP()
在上面的代码中,通过调用AfxBeginThread函数创建并启动了一个子线程,并将其设置为正常优先级。然后,在主线程中调用WaitForSingleObject方法来等待子线程的结束。在子线程类(例如上述示例中的CMyThread)中,可以重写 InitInstance() 和 ExitInstance() 方法来执行具体的操作和清理工作。
请注意,在实际使用过程中,可能需要根据具体需求进行适当的错误处理和资源管理。
内容由零声教学AI助手提供,问题来源于学员提问




