当主线程在无限循环中运行时,服务器没有收到用QTcpSocket :: write编写的字节数?

时间:2013-02-27 14:23:26

标签: c++ c linux windows qt

我正在开发一个与服务器交互的应用程序。

启动时,它正在从数据库加载一些数据,当数据库大小很大时,应用程序在很长的循环中运行,假设我在db中有10个lac记录,循环将迭代10次lac。

经过一段时间(由用户设置)后,假设1秒钟,我的应用程序正在向不同线程的服务器发送心跳消息。

在正常情况下,它工作正常,但是当应用程序在长循环中运行时,服务器尚未收到心跳消息,尽管QTcpSocket::write()返回的写入字节与我写的(成功)相同,但是{{ 1}}没有显示任何接收到的字节。

我用过

tcpDump

1 个答案:

答案 0 :(得分:0)

尝试在循环中添加processEvents()(假设每1000个循环或每100毫秒),以使您的应用程序保持响应。当然,如果你遇到这样的问题,这是一个糟糕设计的迹象。考虑重新设计应用程序以使用多个线程,即主线程和工作线程进行长时间操作(循环)。有关Qt上的线程支持的更多信息,请参见here