异常!(线程)
错误!(线程)
void CMFC_TaskingDoc::SuspendSpinner(int nIndex, BOOL bSuspend)
{
if (!bSuspend)
{
if (m_pSpinThread[nIndex])
{
HANDLE hThread=m_pSpinThread[nIndex]-> m_hThread;
::WaitForSingleObject(hThread,INFINITE);
}
}
else
{
int iSpnr;
switch(nIndex)
{
case 0:
iSpnr=1;
break;
case 1:
iSpnr=3;
break;
}
m_pSpinThread[nIndex]=AfxBeginThread(ThreadFunc,(LPVOID)&m_cSpin[iSpnr]);////////这局有错误!说是第一个参数传递错误!
}
}
UINT CMFC_TaskingDoc::ThreadFunc(LPVOID pParam)
{
CSpinner *lpSpin=(CSpinner*)pParam;
BOOL *pbContinue=lpSpin-> GetContinue();
while (*pbContinue)
{
lpSpin-> Draw();
}
return 0;
}
error C2665: 'AfxBeginThread ' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *) '
请问为什么啊?还有怎么解决?
顺便问一下!如果把SuspendSpinner 加上static 也会有5个错误为什么啊?
谢谢!
------解决方案--------------------
在每个参数前加上(AFX_THREADPROC)即:
AfxBeginThread((AFX_THREADPROC)ThreadFunc,(LPVOID)&m_cSpin)
------解决方案--------------------
DWORD dwThreadId, dwThrdParam = 1;
hReadThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TheardEvent, &dwThrdParam, 0, &dwThreadId);
------解决方案--------------------
线程函数要是全局函数或静态成员函数,你的UINT CMFC_TaskingDoc::ThreadFunc要声明为static。静态成员函数只能用静态成员,如果SuspendSpinner加了static,m_pSpinThread等也要为static。
void CMFC_TaskingDoc::SuspendSpinner(int nIndex, BOOL bSuspend)
{
if (!bSuspend)
{
if (m_pSpinThread[nIndex])
{
HANDLE hThread=m_pSpinThread[nIndex]-> m_hThread;
::WaitForSingleObject(hThread,INFINITE);
}
}
else
{
int iSpnr;
switch(nIndex)
{
case 0:
iSpnr=1;
break;
case 1:
iSpnr=3;
break;
}
m_pSpinThread[nIndex]=AfxBeginThread(ThreadFunc,(LPVOID)&m_cSpin[iSpnr]);////////这局有错误!说是第一个参数传递错误!
}
}
UINT CMFC_TaskingDoc::ThreadFunc(LPVOID pParam)
{
CSpinner *lpSpin=(CSpinner*)pParam;
BOOL *pbContinue=lpSpin-> GetContinue();
while (*pbContinue)
{
lpSpin-> Draw();
}
return 0;
}
error C2665: 'AfxBeginThread ' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *) '
请问为什么啊?还有怎么解决?
顺便问一下!如果把SuspendSpinner 加上static 也会有5个错误为什么啊?
谢谢!
------解决方案--------------------
在每个参数前加上(AFX_THREADPROC)即:
AfxBeginThread((AFX_THREADPROC)ThreadFunc,(LPVOID)&m_cSpin)
------解决方案--------------------
DWORD dwThreadId, dwThrdParam = 1;
hReadThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TheardEvent, &dwThrdParam, 0, &dwThreadId);
------解决方案--------------------
线程函数要是全局函数或静态成员函数,你的UINT CMFC_TaskingDoc::ThreadFunc要声明为static。静态成员函数只能用静态成员,如果SuspendSpinner加了static,m_pSpinThread等也要为static。