路径警告和 QNetworkAccessManager 处不存在对象

问题描述 投票:0回答:1

我注意到,如果我创建

QNetworkAccessManager
的实例,甚至不使用该实例(不发出任何请求或其他操作),然后关闭我的 VPN,我的 Qt 应用程序会打印:

"Object does not exist at path “/org/freedesktop/NetworkManager/ActiveConnection/28”"
"Object does not exist at path “/org/freedesktop/NetworkManager/ActiveConnection/28”"

看来这不是我的错。但有什么办法可以消除这些警告吗?还是我做错了什么?

我能想到的唯一方法是在每个实际请求上创建一个

QNetworkAccessManager
的实例。但这听起来确实效率很低。另外,如果我在实际请求期间关闭 VPN 会怎样——那么我仍然会遇到同样的问题。

c++ qt networking network-programming qt5
1个回答
0
投票

有一个 QT bug https://bugreports.qt.io/browse/QTBUG-114666 它有不同的症状,但描述准确地描述了这里发生的情况。

幸运的是,有一个修复程序,可以在该错误的评论中找到https://codereview.qt-project.org/c/qt/qtbase/+/373426,因此应用此补丁可以解决该问题。

这样做时,警告在我的项目中消失了,似乎它应该从所做的更改中起作用。另外需要注意的是,在我的项目中,我还观察到大量 CPU 时间花费在

QNetworkManager
上,这个补丁也解决了这个问题。

注意:这可能取决于所使用的 NetworkManager 版本,因为新接口仅在 1.2.0 中引入(您可以在此处查看

PropertiesChanged
信号描述 https://developer-old.gnome.org/NetworkManager/ stable/gdbus-org.freedesktop.NetworkManager.Connection.Active.html),而我的版本是1.42.6(您可以通过
nmcli --version
查看您使用的版本)

© www.soinside.com 2019 - 2024. All rights reserved.