各位大虾们,求助一个紧急问题:
我是在PC端程序中使用QNetworkAccessManager实现HTTP的数据请求,发送请求的过程中(数据请求还没有完成),断网比较容易高概率出现程序死机。xp上不会出现,在win7(VISTA)系统上出现的概率很高,不知道是QT本身的Bug还是我的代码问题,我实现的代码如下:
////////拨上号时
m_pHttp = new QNetworkAccessManager();
connect(m_pHttp, SIGNAL(finished(QNetworkReply*)), this, SLOT(onHttpFinished(QNetworkReply*)));
QUrl url(strHtpPath);
QNetworkRequest request = QNetworkRequest(url);
m_request = request;
m_pHttp->get(request);
///接受数据完成时
void onHttpFinished(QNetworkReply* reply)
{
if(reply->error() == QNetworkReply::NoError)
{
QByteArray byteAllRead = reply->readAll();
reply->close();
reply->deleteLater();
}
////断网时
if(m_pHttp != NULL)
{
m_pHttp->setNetworkAccessible(QNetworkAccessManager::NotAccessible);
m_pHttp->deleteResource(m_request);
disconnect(m_pHttp, SIGNAL(finished(QNetworkReply*)), this, SLOT(onHttpFinished(QNetworkReply*)));
m_pHttp->deleteLater();
m_pHttp = NULL;
}
我是直接在GUI的主线程中做的,而且我没有开辟新的线程,我测试了一下,发现QWebView在win7(Vista)系统上,发送请求的过称中,断网也会出现程序死机。大家之前遇到过类似的问题吗?我感觉像是QT本身的BUg,我使用的是QT4.7的版本,大家帮忙分析一下,谢谢!!!