小智 10
我会尝试通过在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;
Run Code Online (Sandbox Code Playgroud)
或者如此处所述,对于直接断开连接,您可以在同一事件中使用Disconnect方法.
procedure TDownloadThread.OnWorkHandler(ASender: TObject; AWorkMode: TWorkMode;
AWorkCount: Integer);
begin
if FCancel then
begin
FCancel := False;
FIdHTTP.Disconnect;
end;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4311 次 |
| 最近记录: |