我正在开发一个应用程序,它会将文件内容上传到服务器。
为了将文件上传到服务器,我使用了 'QNetworkAccessManager' 类。由于它以异步方式工作,所以我使用 QEventLoop 将其改为同步方式。
Class FileTransfer
{
Public :
QNetworkAccessManager mNetworkManager;
Void Upload(QNetworkRequest request, QIODevice *data)
{
responce = mNetworkManager.put(request, data);
EventLoop.exec();
ReadResponce(responce);
}
Void Stop()
{
responce ->close();
}
}
在我的示例应用程序中,我有两个窗口。第一个窗口用于选择文件,第二个窗口用于显示进度。当用户在第一个窗口中点击上传按钮时,将显示第二个窗口,然后我创建 FileTransfer 对象并开始上传。
在上传文件的过程中,如果用户关闭了窗体,则在窗口的析构函数中调用 'FileTransfer' 的停止方法,之后删除 'FileTransfer' 对象。
但此时 Upload() 函数尚未完成,因此程序将崩溃。
请帮助我解决以下问题: 如何在 'stop()' 函数中等待 Upload() 函数完成。