2016-04-30 185 views
2

我在Qt中編寫了一個簡單的網絡文件傳輸應用程序,並且我正在努力實現超時。Qt中簡單的網絡超時(C++)

基本上,我要的是下面,

while(!AcknowledgeReceived) 
{ 
if(timeout) 
    { 
    break; 
    } 
} 

目前,超時由Qtimer改變,但一旦在循環開始執行,但它從來沒有離開。 (插槽QTimer發出不執行。) 我收集到這與線程有關,但我很想在這裏實現它。

所以我的問題是,我該如何去確保方法翻轉超時被執行,或者我如何得到與另一種方法相同的結果?

回答

0

例如

QNetworkAccessManager netman; 
QNetworkRequest request{url}; 
QNetworkReply* reply = netman.post(request, data); 

while (!reply->isFinished()) 
{ 
    QThread::msleep(1); 
    qApp->processEvents(); 
} 
1

當你這樣循環時,Qt主事件循環將不會運行,因爲它在調用你的函數。

您可能需要重新設計您的應用程序以僅使用插槽和信號,因此您不需要循環。或者你必須process the Qt event yourself