0

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

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

经过一段固定的时间间隔(由用户设置)让我们说 1 秒,我的应用程序正在向不同线程中的服务器发送心跳消息。

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

我用过

tcpSocket->setSocketOption(QAbstractSocket::LowDelayOption , 1); 
tcpSocket->setSocketOption(QAbstractSocket::KeepAliveOption , 600);
4

1 回答 1

0

尝试processEvents()在循环中添加(假设每 1000 个周期或每 100 毫秒)以保持应用程序响应。当然,如果你遇到这样的问题,这是一个糟糕的设计的标志。考虑重新设计您的应用程序以使用多个线程,即主线程和一个用于长操作的工作线程(您的循环)。更多关于 Qt 线程支持的信息可以在这里找到。

于 2013-02-27T14:30:22.743 回答