windows - QThread::start: 创建线程失败(没有足够的内存资源来处理这个命令。)
问题描述
应用程序:Qt/QML 桌面应用程序。
在运行应用程序超过一小时时,应用程序崩溃并在日志中出现“QThread::start: Failed to create thread (没有足够的内存资源可用于处理此命令。)”错误。但不使用任何 QThreads。在应用程序中,我使用 QNetworkAccessManager 进行 http get 和 post 调用。
在 API 调用中添加了 connect 函数来绑定 onfinished 信号
QNetworkAccessManager *networkManager = new QNetworkAccessManager();
connect(networkManager, SIGNAL(finished(QNetworkReply*)),this, SLOT(updateRoomsList(QNetworkReply*)));
networkManager->post(request, QJsonDocument(jsonObject).toJson());
Slot 的处理方式如下所示,以清除 networkmanager 指针
void NetworkAPIs::updateRoomsList(QNetworkReply* reply)
{
QByteArray response_data = reply->readAll();
emit updateRoomsList(response_data);
reply->deleteLater();
QObject *networkManager = sender();
disconnect(networkManager, SIGNAL(finished(QNetworkReply*)),this,
SLOT(updateRoomsList(QNetworkReply*)));
networkManager->deleteLater();
}
解决方案
推荐阅读
- javascript - 我第一次在页面上导航时不会调用头部中的特定页面脚本。代码组织质疑
- terraform - 每个环境需要有单独的通知通道
- javascript - 如何显示正在加载的内容如下:正在加载。加载..加载
- java - 使用 Android Studio 3.5 在 Kotlin 中的资源文件和 const val 之间哪种方式更好?
- vba - VBA Word - 反向遍历文档中的所有段落
- glib - GLib线程中的g_ptr_array_add()是否安全?
- java - 为什么我不能再从命令行运行 java 了?
- swift - 无法将 Firebase 文档 ID 从 VC 发送到 VC
- java - 在 Java 中读取和打印带有分隔符的文本文件
- sql - 如何在 SQL Server 企业版中获取数据库大小