问题描述:
先在线程中创建并使用CSocket,然后在另一个对话框中再创建CSocket,在Create之后就自动跳出。
简要代码如下:
unsigned long __stdcall threadDownloadFile(LPVOID lparam)
{
CSecurityPage * dlg = (CSecurityPage *)lparam;
CSocket sock; //创建CSocket
if(!sock.Create())
return 0;
sock.Connect(ADDRESS_SERVER,PORT_SERVER);
..............
sock.Close();
dlg->PostMessage(WM_COMMAND, IDOK); //关闭CSecurityPage对话框进入下一步
return 0;
}
//创建一个线程
void CSecurityPage::OnEnter()
{
............
CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadDownloadFile,this,0,NULL);
}
//线程执行完后显示CShow对话框,OnSubmit中再次用到了CSocket
void CShow::OnSubmit()
{
CSocket sock; //再创建CSocket
if(!sock.Create())
{
AfxMessageBox(L“Create error“); //这个没弹出来
return 0;
}
AfxMessageBox(L“Connect server“); //这个也没弹出来
//下面的都没执行,OnSubmit()直接返回了
sock.Connect(ADDRESS_SERVER,PORT_SERVER);
..............
sock.Close();
}
程序在evc4.0中编译,在wince4.2上运行。
问题的解决:
将CSocket全部换成socket,connect,send,recv等API。
我不清楚错误的原因是什么,也许CSocket的内部有些小动作。
posted on 2006-03-10 09:59 zgf的blog 阅读(2342)
评论(7) 编辑 收藏