我是新來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