您好我有一个QNetworkAccessManager
我用来发送请求从服务器获取图像数据。这个调用是异步的。我用它做了多次调用。每次调用都是通过打开QNetworkAccessManager
的新实例完成的。因此,当发生特定情况时,我想阻止QNetworkAccessManager
接收来自其网络请求的回复。有什么办法吗?感谢。
答案 0 :(得分:2)
不要为每个请求使用新的QNetworkAccessManager,而是共享管理器。只有一个通常很好。当然,如果应用程序设计建议它可以有多个 - 但是例如通常不需要在单个控制对象中管理它们中的多个。只需要一个与控制网络请求的对象具有相同生命周期的管理器。
要取消正在运行的操作,请保持QNetworkReply *指针QNetworkAccessManager :: get / put / post返回并在条件发生时调用abort()。 连接到finished() signal以将其从簿记中删除(否则您将最终使用悬空指针)。
如果这变得太复杂,请考虑使用命令模式。 In this answer我描述了为什么我发现它在这种情况下特别有用。