_beginthreadex的菜鸟问题 急!
我在类的构造函数中调用了_beginthreadex,线程函数是同一个类的静态成员函数,如下:
#include "stdafx.h"
#include"iostream.h"
#include"windows.h"
#include"process.h"
class CWorkerThread
{
public:
CWorkerThread(LPCTSTR szName)
{
m_szName=szName;
m_hThread=INVALID_HANDLE_VALUE;
m_hThread=_beginthreadex(NULL,0,
ThreadProc,//这一句怎么写?
reinterpret_cast<LPVOID>(this),0,NULL);
}
virtual ~CWorkerThread()
{
::CloseHandle(m_hThread);
}
virtual void WaitForCompletion()
{
::WaitForSingleObject(m_hThread,INFINITE);
}
protected:
static DWORD __stdcall ThreadProc(LPVOID lpParam)
{
CWorkerThread *pThis=reinterpret_cast<CWorkerThread*>(lpParam);
pThis->DoStuff();
return 0;
}
virtual void DoStuff()
{
for(int n=0;n<100;n++)
{
cout<<"Thread:"<<m_szName<<" ID:"<<::GetCurrentThreadId()
<<",count"<<n<<endl;
}
}
HANDLE m_hThread;
LPCTSTR m_szName;
};
int main()
{
CWorkerThread wtA("A");
CWorkerThread wtB("B");
wtA.WaitForCompletion();
wtB.WaitForCompletion();
cout<<"Both threads complete."<<endl;
return 0;
}
其他地方都没有问题,编译器报错:
'_beginthreadex' : cannot convert parameter 3 from 'unsigned long (void *)' to 'unsigned int (__stdcall *)(void *)'
还望大侠指教!