スレッドでTIdHTTP.Get
プロシージャを使用してファイルをダウンロードしています。私の質問は、ファイルのダウンロードを停止(キャンセル)する方法です。TIdHTTPを使用してダウンロードを停止(キャンセル)する方法
4
A
答えて
3
あなたは...
9
を既定の手順idhttp1.Disconnectを使用することができ、私はTIdHTTP.OnWorkイベントでAbort方法を使用してサイレント例外をスローし、それをキャンセルしようとするだろう。このイベントは読み取り/書き込み操作のために起動されるため、ダウンロードの進行中にも起動されます。
type
TDownloadThread = class(TThread)
private
FIdHTTP: TIdHTTP;
FCancel: boolean;
procedure OnWorkHandler(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
public
constructor Create(CreateSuspended: Boolean);
property Cancel: boolean read FCancel write FCancel;
end;
constructor TDownloadThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FIdHTTP := TIdHTTP.Create(nil);
FIdHTTP.OnWork := OnWorkHandler;
end;
procedure TDownloadThread.OnWorkHandler(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
begin
if FCancel then
begin
FCancel := False;
Abort;
end;
end;
またはそれはあなたが同じイベントにDisconnect方法を使用することができ、直接切断のために、ここで言及したように。
procedure TDownloadThread.OnWorkHandler(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
begin
if FCancel then
begin
FCancel := False;
FIdHTTP.Disconnect;
end;
end;
関連する問題
- 1. Javaでスレッドを停止、一時停止、キャンセルする方法
- 2. サムスンブルーレイデバイスの停止ボタンを使用してrtmpストリームを停止する方法
- 3. DownloadManagerを使用してダウンロードをキャンセル/停止することはできますか?
- 4. メッセージボックス内の「キャンセル」ボタンを使用してフォーム内の機能を停止する
- 5. checkstyleを使用してMavenビルドを停止する方法
- 6. JavaScriptを使用してサイズ変更を停止する方法...
- 7. anacondaを使用してjupyterサーバーを停止する方法
- 8. コマンドラインパラメータを使用してDebugViewツールを停止する方法
- 9. tsharkコマンドを使用してwiresharkキャプチャを停止する方法
- 10. .htaccessを使用してサブドメインのリダイレクトを停止する方法
- 11. AlarmManagerを使用してサービスを停止する方法
- 12. NSThreadをキャンセルまたは停止する方法は?
- 13. 反応ネイティブを使用して、アンドロイドメディア(再生、一時停止、停止)を使用する方法
- 14. タイムアウト機能のキャンセル/停止
- 15. Macでダウンロード中にファイルを削除する方法を停止する方法
- 16. Androidでokhttpでダウンロードを一時停止/再開する方法
- 17. リアクティブ観測を使用してダウンロードをキャンセルする
- 18. Pythonを使用して複合データを返すマルチスレッドを停止する方法
- 19. android-beacon-library(altbeacon)を使用してスキャンビーコンを正しく停止する方法
- 20. window.openを使用しているときにブラウザポップアップブロッカーを停止する方法
- 21. スクロールを停止するとメニューを停止する方法
- 22. フォームをJquery/Ajaxを使用して送信を停止する方法
- 23. spring integration dslを使用してファイルポーラーを停止/一時停止する
- 24. ダウンロード中にNSLURLConnectionを停止/閉じる方法
- 25. asp.net Webフォームのキャンセルボタンからのクエリの停止/キャンセル方法
- 26. Javaを使用して実行中のバッチファイルを停止する方法
- 27. Azure Automationを使用してサービスファブリックノードを開始および停止する方法
- 28. jQuery DataTableプラグインを使用して最初のソートを停止する方法
- 29. jqueryを使用してホバー上でCSSアニメーションを一時停止する方法
- 30. Windows:CreateProcessを使用してリダイレクトされたStdoutのバッファリングを停止する方法
'OnWorkHandler'イベントの内部から' FIdHTTP.Disconnect'を呼び出す方がいいですか? – Salvador
@サルバドール - もしあなたがもうFIdHTTPからの接続を維持しない場合に備えて、確かにそうなります。重要なのは[OnWork](http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdTCPConnection_OnWork.html)イベントで実行して、進行中にダウンロードを中断することです。 –
途中でリクエストを中止することはできず、接続を開いたままにしておくことはできません。ソケットを退出する状態や、すでに送信されたデータはわかりません。 HTTP接続をクリアして、新しいリクエストに対してオープンしたままにする方法はありません。ただのやり方は、接続を閉じることです。 –