2012-04-16 7 views
0

かなりの研究を行っていますが、これに対する答えを見つけることはできません。私は別のスレッドに移動するQObjectから派生したインスタンスを作成することによって構築されたアプリケーションを持っています。これらの「スレッド」では、QNetworkAccessManagerを使用して、空の状態を要求します。私の問題は、すぐに起こっているリトライロジックがあることです。たとえば、コンテナが存在しない場合は、要求を再試行するために作成する必要があります(put BLOB)。問題は、コンテナが作成された後にput BLOBリクエストがあまりにも早く起こった場合、何もアップロードできないことです。また、リタイアの間に時間を増やしてお互いにすぐに起こらないようにしたいと思います。スレッドを強制的にスリープ状態にする最良の方法は何ですか?QThreadの中の睡眠機能

答えて

1

おそらくQTimerと信号/スロットの組み合わせを使用することになります。たとえば、次のように

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

... 

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

か?どこ?関数内で使用しようとしましたが、許可されていませんでした。 – chikuba

+0

QThread :: sleep()を使用すると、QThreadからクラスを派生させる必要があります。 – Kunal

+0

ああ、忘れました。私の答えを書き直す... – Chris

1
+0

私はちょうどthis-> thread() - > wait(x)を行うことができますか?別のスレッドに移動されてobjecthirerchyの関数の1つの内部? – chikuba

+0

'this-> thread()'があなたの関数が実行されているスレッドであれば、私は「はい」と答えるでしょう。ただ試してみてください。 – RedX