0

嗨,我有一个QNetworkAccessManager用于发送请求以从服务器获取图像数据的请求。此调用是异步的。我用它打了多个电话。每次调用都是通过打开一个新实例来完成的,QNetworkAccessManager所以当发生特定情况时,我想停止QNetworkAccessManager接收来自其网络请求的回复。有什么办法吗?谢谢。

4

1 回答 1

3

不要为每个请求使用新的 QNetworkAccessManager,而是共享管理器。通常只有一个很好。当然,如果应用程序设计建议它可以有多个 - 但是例如在单个控制对象中管理多个它们通常是不必要的。只需一个管理器与控制网络请求的对象具有相同的生命周期。

要取消正在运行的操作,请保持 QNetworkReply* 指针 QNetworkAccessManager::get/put/post 返回并在您的条件发生时调用abort() 。连接到finished() 信号以将它们从簿记中删除(否则最终会出现悬空指针)。

如果这变得太复杂,请考虑使用命令模式。在这个答案中,我描述了为什么我发现它在这种情况下特别有用。

于 2013-01-26T09:28:38.420 回答