我在新的线程中释放一个CSocket对象,为什末老出现ASSERT()错误 我试图在一个子线程施放一个CSocket对象,可是不行,为什末? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CSocket只能在主线程中使用。不要使用mfc的类了. CSocket可以在子线程中使用,但是在线程之间不能传递CSocket对象。 你将CSocket对象定义成全局的并在前面加上volatile试试,如volatile CSocket m_Svr; 我使用原始的套接字(不是CSocket),在多线程中使用就没有问题。但CSocket没有使用过。 这主要是CSocket的基类CAsyncSocket是异步模式,用窗口消息来通知Socket读写等事件,由于窗口的消息是线程内的,所以如果你切换到别的线程,CSocket会收不到消息,在PumpMessages中会用ASSERT(pState->m_hSocketWindow != NULL);发出异常,如果在Release版中编译就不会出现这样的问题,因为ASSERT只在DEBUG版中不起作用.除非CSocket类在建立的时候就在另一个线程中,不能一个CSocket对象跨越两个线程.这样会出现异常,其实MFC提供的CAsyncSocket和CSocket都不适合于多线程(我个人的认为).如果编写服务器程序可以用CAsyncSocket异步实现单线程方式,而CSocket是阻塞的(建立在非阻塞上的阻塞),所以建立只用来编写一些点对点的网络应用程序可以满足要求.如果要编写服务器多线程的网络程序建议自己建立Socket类. vc对话框mfc程序里ctreectrl控件,点击不同结点元素时,树的右边显示不同的图片 图像处理的DLL文件,有什么错误? 字符串连接问题 MFC ActiveX 控件 插入到 RichEdit 的问题 如何打断一个阻塞的函数 ComboBox属性更改问题 我要学DirectX方面的编程大家推荐几本书。 广域网数据传输,欢迎参与讨论: 如何得到本机浏览器将访问的ip地址? 请教各位高手一个调试的问题 :-) 斑竹,请赐教哦! 用windows API编程的时候如何引入资源??(急)
volatile CSocket m_Svr;
但CSocket没有使用过。