首页 > 解决方案 > 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();
}

标签: windowsqt

解决方案


推荐阅读