首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

小弟我刚接触线程,谁能告诉小弟我如何在线程里打开Dialog而不出现"Debug Assertion Failed"

2012-02-25 
我刚接触线程,哪位高手能告诉我怎么在线程里打开Dialog而不出现Debug Assertion Failed我建立的是简单的

我刚接触线程,哪位高手能告诉我怎么在线程里打开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。

热点排行