读书人

小弟我刚接触线程谁能告诉小弟我如何

发布时间: 2012-02-25 10:01:48 作者: rapoo

我刚接触线程,哪位高手能告诉我怎么在线程里打开Dialog而不出现"Debug Assertion Failed"
我建立的是简单的聊天工具,在客户端主界面接收其他客户端连接请求。
每来一个请求开启一个线程建立相应的界面,但总出错,建立界面的线程如下:
DWORD WINAPI Talk(LPVOID s)
{
SOCKET newsockfd=*((SOCKET*)s); //与另一个客户端相连的插口
CTalkDlg talk(newsockfd);
talk.DoModal();
return 0;
}

对应Dialog的构造函数是:
CTalkDlg::CTalkDlg(SOCKET sockfd)
{
ConFriendSock=sockfd;
m_StrSend = _T( " ");
m_StrShow = _T( " ");
}

[解决办法]
Work Thread和UI Thread的概念分别不清,如果要使用UI Thread,建议用AfxBeginThread。你这样做将Work Thread和UI Thread混淆,在一些MFC程序里面会对CRuntimeClass的变量进行检测,所以会有Assertion。

读书人网 >VC/MFC

热点推荐