Имеется диалоговое MFC приложение (с использованием винсокетов, т.е. AfxSocketInit() вызван).
Класс диалога — CEagent2Dlg
в нём есть мемберы:
CSocket sockSrvr;
CSocket sockRecv;
CAgentThread thread;
и на OnInitDialog() делается следующее:
sockSrvr.Create(373);
sockSrvr.Listen();
thread.CreateThread();
класс CAgentThread сделан из CWinThread причём переопределена OnIdle():
BOOL CAgentThread::OnIdle(LONG lCount)
{
// TODO: Add your specialized code here and/or call the base class
CEagent2Dlg *dlg=(CEagent2Dlg *)((::theApp).m_pMainWnd);
dlg->sockSrvr.Accept(dlg->sockRecv);
return 1;
}
на вызове Accept всё это дело рушится с треском и выдаёт Debug Assertion Failed вот в этом куске кода:
BOOL CSocket::PumpMessages(UINT uStopFlag)
{
// The same socket better not be blocking in more than one place.
ASSERT(m_pbBlocking == NULL);