似乎在我在Qt中创建QNetworkAccessManager对象后,它使其他应用程序(那些大量使用网络的应用程序,如多人游戏)运行缓慢。
例如,如果我在运行我的应用程序作为背景时运行Dota2,即使我的Qt应用程序非常轻,游戏也会开始滞后(我通过进程资源管理器进行检查,它的整个CPU使用率仅为1%) 。如果我从代码中删除QNetworkAccessManager部分,那么游戏运行顺利,没有任何滞后。
以下是我使用QNetworkAccessManager的方法;
QNetworkAccessManager *qnam = new QNetworkAccessManager(this);
response = qnam->get(QNetworkRequest(url));
connect(response , &QNetworkReply::finished, this, &Test::parse_response);
在parse_response()
中void parse_response() {
// Network Error occured
if (response->error() != QNetworkReply::NoError) {
response->deleteLater();
return;
}
response->deleteLater();
qnam->deleteLater();
}
有趣的是,当我通过进程资源管理器检查我的应用程序的I / O使用情况时,它会显示I / O使用情况的奇怪活动
当我没有使用QNetworkAccessManager时,奇怪的I / O用法就消失了。因此我假设我的qnam尚未成功删除但在我的代码中找不到任何问题。
如果有人有过与此问题相似的经历吗? 或者仅仅是我对QNetworkAccessManager的使用配置不正确?
答案 0 :(得分:2)
我发现这是QNetworkAccessManager中的一个错误。
在无线环境中,QNetworkAccessManager每隔几秒扫描一次wifi状态。那些小峰值就是证据。请检查以下错误报告。
https://bugreports.qt.io/browse/QTBUG-40332
要解决此问题,请使用
进行编译-D QT_NO_BEARERMANAGEMENT
选项或只删除插件中的bearer文件夹。