很多问题,一定是要放在特定环境才能出现的。比如,有如下代码
void * QueryInfoSocketThread::Entry()
{
wxIPV4address addr;
if(!addr.Service(ListenPort))
return NULL;
wxSocketServer* pServerSocket = new wxSocketServer(addr);
wxIPV4address addr; 这句代码竟然可以引发异常!不可思议哦!
引发的异常如下图:

这真的是很奇怪,很快发现问题不是我一个:
http://trac.wxwidgets.org/ticket/3010
那个人n年前就举报了........(⊙_⊙)
后来维护人员忍不住了!
After reading the whole discussion I don't understand what needs to be done here. AFAICS the only problem is that Initialize() must be called from the main thread but it doesn't seem to be a big limitation, is it?
你们不知道在主线程开始前要 Initialize 吗~~~~~~
猪啊啊啊啊啊啊啊~~~~~
于是:
QueryInfoServer::QueryInfoServer()
{
wxSocketBase::Initialize();
_pQuerySocketThread = new QueryInfoSocketThread( );
SetListenPort(1111);
}
解决了~~~~
真是弱智问题嗷嗷
本文探讨了一个在使用wxWidgets库时遇到的线程相关错误,并详细阐述了解决该问题的过程。通过分析代码段,指出在主线程外初始化wxSocketBase对象会导致异常,最终通过将初始化操作移至主线程得以解决。文章提醒开发者注意线程安全性和wxWidgets的使用规范。
521

被折叠的 条评论
为什么被折叠?



