读书人

QTcpSocket罗致任务管理器的句柄数不断

发布时间: 2014-04-26 16:27:32 作者: rapoo

QTcpSocket导致任务管理器的句柄数不断增加
我用QTcpSocket去连接服务器。
如果服务器没有打开,那就用个定时器不断重连。
每次连接,都会

sock = new QTcpSocket(this);
sock->connectToHost("127.0.0.1", 1234);
connect(sock, SIGNAL(disconnected()), this, SLOT(disconnected()));
connect(sock, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(error(QAbstractSocket::SocketError)));


然后由于服务器没有开启,所以会收到error信号。
在error信号里面:
sock->close();
sock->deletelater();


但是打开任务管理器,会看到这个进程的句柄数在不断增加,明明调用了close方法和deletelater,还是这样。

这个socket的运行的线程不在主线程,是单独的线程。

有人知道是什么原因,应该怎么处理吗?谢谢了 Qt QTcpSocket
[解决办法]
可能是你定时器重连速度大于你应答超时删除速度,建议把定时重连设为一个合理的时间试试

读书人网 >QT开发

热点推荐