ファイルのコンテンツをサーバーにアップロードするアプリケーションに取り組んでいます。
ファイルをサーバーにアップロードするには、「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();
}
}
サンプル アプリケーションには 2 つのウィンドウがあります。1 番目はファイルを選択し、2 番目は進行状況を表示します。
ユーザーが最初のウィンドウでアップロード ボタンをクリックすると、2 番目のウィンドウが表示され、FileTransferオブジェクトを作成してアップロードを開始します。
ユーザーがフォームを閉じた場合にファイルをアップロードしているときに、ウィンドウのデストラクタで「<em>FileTransfer」の停止を呼び出し、その後「<em>FileTransfer」オブジェクトを削除します。
しかし、ここではUpload()関数がまだ完了していないため、クラッシュします。
私を助けてください: Upload() 関数が完了するまで'stop() ' 関数で待機する方法