判断线程结束解决办法
判断线程结束
void Func()
{
m_hDetailThread = AfxBeginThread(_ThreadContactDetail,this,THREAD_PRIORITY_NORMAL);
//判断线程结束。结束后要处理一些事情。
.............. //代码如何编写
//判断已经结束后
OtherFunc();
}
请问这个要如何判断其结束。最好有代码。
------解决方案--------------------
线程结束后,发个事件
或者WaitForSingleObject
------解决方案--------------------
// 阻塞直到线程结束.
while(WAIT_OBJECT_0 != MsgWaitForMultipleObjects(1, &m_hDetailThread, FALSE, INFINITE, QS_ALLINPUT))
{
MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
------解决方案--------------------
1楼正解
------解决方案--------------------
在return 0前发事件
------解决方案--------------------
void Func()
{
m_hDetailThread = AfxBeginThread(_ThreadContactDetail,this,THREAD_PRIORITY_NORMAL);
//判断线程结束。结束后要处理一些事情。
.............. //代码如何编写
//判断已经结束后
OtherFunc();
}
请问这个要如何判断其结束。最好有代码。
------解决方案--------------------
线程结束后,发个事件
或者WaitForSingleObject
------解决方案--------------------
// 阻塞直到线程结束.
while(WAIT_OBJECT_0 != MsgWaitForMultipleObjects(1, &m_hDetailThread, FALSE, INFINITE, QS_ALLINPUT))
{
MSG msg;
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
------解决方案--------------------
1楼正解
------解决方案--------------------
在return 0前发事件
------解决方案--------------------
- C/C++ code
#include "stdafx.h" #include <iostream> using namespace std; UINT __cdecl ThreadProc(LPVOID lParam) { cout<<"Work thread start!!!"<<endl; for(int i=0; i<10; i++) { cout<<"Thread cout: "<<i<<endl; Sleep(500); } cout<<"Work thread end!!!"<<endl; return 0; } int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { CWinThread* pThread = AfxBeginThread(ThreadProc, NULL, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, NULL); pThread->m_bAutoDelete = FALSE; HANDLE hThread = pThread->m_hThread; pThread->ResumeThread(); WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); delete pThread; pThread = NULL; cout<<"main thread end!"<<endl; return 0; }
------解决方案--------------------
楼上的代码有问题哈
WaitForSingleObject(hThread->m_hObject, INFINITE);
可以哈