我是新来QT。我创建了对象类QNetworkAccessManager主窗口作为父项。还注册完成SIGNAL。它工作正常。 但我想知道它将在哪个线程中运行。它会阻止主线程吗?如果我需要执行get操作的顺序,我应该如何编写代码。 请给我一些示例,以正确理解概念。QNetworkAccessManager处理异步线程
0
A
回答
2
它肯定不会在主线程中运行,调用得到()是异步的。
例如,这将持续触发GET请求:
while (condition) {
QNetworkRequest request;
request.setUrl(QUrl(m_ServerURL);
m_httpGetUpdatedFile->get(request);
}
你就必须为它处理QNetworkReply完成信号的插槽。那个插槽基本上应该会针对你所做的每个获取请求进行调用(即使它失败了)。如果您需要跟踪所有获取请求的完成时间,则需要跟踪您发布的帖子数量,然后拥有自己的完成标志或信号。
0
QNAM不使用线程在后台,但是这是为你的应用程序代码完全不可见。你看到的所有东西都会在主线程中运行。
QNAM在通常的Qt的方式工作,它会发出信号时,事情发生了,你将这些信号连接到自己的代码插槽,做事多,因为他们可以。如果他们没有足够的数据,那么你的插槽不能阻塞等待新数据,他们必须返回。然后当/如果有更多的数据时他们会再次被调用(或者如果例如连接被终止,你会得到另一个信号)。
一些链接,如果你没有看过这些:
相关问题
- 1. 长处理线程异步ASP.NET网页
- 2. 线程与异步图像处理?
- 3. Clojure消息处理/异步,多线程
- 4. 控制PyQt中的异步线程 - 多线程或多处理?
- 5. Tornado异步处理程序
- 6. 异常处理异步线程队列java.lang.UnsupportedOperationException
- 7. 多线程异常处理
- 8. Boost线程异常处理
- 9. 线程和异常处理
- 10. 线程异常处理
- 11. 处理异步信号在多线程程序
- 12. 在全局异常处理程序中处理线程异常?
- 13. Node.js处理异步
- 14. Java异步处理
- 15. 异步处理ODP.NET
- 16. 异步线程
- 17. 异步TaskManager处理作业/步异常
- 18. 异步调用的核心是python线程还是多处理?
- 19. 使用单线程进行异步处理
- 20. 跨线程的C++同步和异常处理
- 21. CompletableFuture:异步调用,处理结果在当前线程后
- 22. Java多线程和异步Http请求处理
- 23. 异步控制器和ASP.NET线程处理
- 24. 如何处理来自非UI线程的异步SQL查询
- 25. ASP.NET中的线程处理异步等待操作
- 26. 单线程如何处理JavaScript中的异步代码
- 27. 等待主线程停止,直到任务被异步线程处理
- 28. Netty UDP处理程序 - 异步?
- 29. 完成处理程序异步
- 30. 等待事件处理程序异步
感谢重播。 是完成插槽将在主线程中运行? 如果它在主线程中运行,它将阻塞主线程。为此我正在使用一个样本作为波纹管。 ---- QNetworkAccessManager管理器; QEventLoop q; QTimer tT; tT.setSingleShot(true); connect(&tT,SIGNAL(timeout()),&q,SLOT(quit())); connect(&manager,SIGNAL(finished(QNetworkReply *)),&q,SLOT(quit())); QNetworkReply * reply = manager.get(QNetworkRequest(QUrl(“URL”))); tT.start(5k); q.exec(); ------ 是此方法correct.I'm计划运行在辅助线程上面的代码。 如果我在辅助线程中运行它会出现问题。 – 2010-03-02 06:44:52