2016-04-30 184 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