我正在使用Delphi 10.1 Berlin更新和Indy的TIdHttp组件。 我通常使用以下代码中止连接:
procedure TMyThread.OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: int64);
begin
if abort then (asender as tidhttp).Disconnect;
end;
这在VCL应用程序中也可以正常工作,只要平台是Windows,也可以在FireMonkey应用程序中使用。当我将此代码用作MacOS作为目标时,它会立即关闭我的应用程序,而不会显示错误消息或显示任何内容。
所以我的问题是我做错了什么,当平台是MacOS时如何中止连接?
答案 0 :(得分:4)
而不是直接调用Disconnect()
并将套接字连接从TIdHTTP
转出,我会引发异常,例如调用SysUtils.Abort()
,让TIdHTTP
或调用请求完全中止后,线程关闭套接字。
procedure TMyThread.OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: int64);
begin
if Self.Abort then SysUtils.Abort;
end;
procedure TMyThread.Execute;
var
HTTP: TIdHTTP;
begin
HTTP := TIdHTTP.Create;
try
...
finally
HTTP.Free;
end;
end;
答案 1 :(得分:0)
尝试这样:
procedure TMyThread.OnWork(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: int64);
begin
try
if abort then (asender as tidhttp).Disconnect;
except
end;
end;