请看看下面这段代码
请看看下面这段代码:
class CCnetThread : public CWinThread
{
public:
CCnetThread(AFX_THREADPROC pfnThreadProc);
static UINT ThreadFunc(LPVOID pObj);
// Operations
private:
CAsyncSocket m_WorkSocket;
...
};
UINT CCnetThread::ThreadFunc(LPVOID pObj)
{
CCnetThread* pThread = (CCnetThread*)pObj;
pThread->InitVariables();
pThread->StartWork();
return 0;
}
BOOL CCnetThread::InitVariables()
{
if ( m_WorkSocket.m_hSocket == INVALID_SOCKET )
{
if ( !m_WorkSocket.Create(TCP_PORT_CONN) )
{
TRACE("connect thread(%d): create work socket failed(%d)\n", this->m_nThreadID,
m_WorkSocket.GetLastError() );
return FALSE;
}
}
return TRUE;
}
void CCnetThread::StartWork()
{
BOOL bDone = FALSE;
while ( !bDone )
{
if ( !bDone )
bDone = WaitToExit();
if ( !bDone )
bDone = WaitToClose();
}
CleanUp();
}
void CCnetThread::CleanUp()
{
// close work socket
m_WorkSocket.Close();
}
每次在CAsyncSocket::Close()中出错,这是为什么?