2012-04-16 55 views
0

做了相當多的研究,但找不到答案。我有一個應用程序,它是通過創建從QObject派生的實例來構建的,我將移動到不同的線程。在這些「線程」中,我有一個QNetworkAccessManager,我可以在其中向Azure休息。我現在的問題是我有一些快速發生的重試邏輯。例如,如果容器不存在,則需要爲要重試的請求創建它(放置blob)。問題是如果在創建容器後put blob請求發生得太快,它將無法上傳任何內容。另外,我想增加兩個人之間的時間,以便他們在彼此之後不會很快發生。強制線程從內部進入睡眠的最佳方式是什麼?QThread內部的睡眠功能

回答

1

我可能最終會使用QTimer和信號/插槽的組合。例如:

// Slot 
void retry() { ... } 

... 

// Execute retry code in 1 second: 
QTimer::singleShot(1000, this, SLOT(retry())); 
+0

怎麼樣?哪裏?試圖在一個函數內使用它,但它不允許 – chikuba 2012-04-16 04:33:11

+0

我認爲使用QThread :: sleep(),你必須從QThread派生你的類 – Kunal 2012-04-16 04:51:13

+0

啊,是的,我忘了它被保護。重寫我的答案... – Chris 2012-04-16 05:17:57

1
+0

我可以然後就這樣做 - >線程() - >等待(X)?在被移動到單獨線程的objecthirerchy中的函數之一內? – chikuba 2012-04-16 21:05:45

+0

如果this-> thread()是你函數運行的線程,我會說是。試試吧。 – RedX 2012-04-17 07:03:23