在异步操作中释放THTTPClient实例的最佳位置是什么?

时间:2018-05-21 23:04:59

标签: delphi

THTTPClient支持异步操作。例如:

var
  H: THTTPClient;
  A: IAsyncResult;
  r: IHTTPResponse;
begin
  H := THTTPClient.Create;
  A := H.BeginGet('http://localhost/get', nil);
  // P1
  r := THTTPClient.EndAsyncHTTP(A);
  ShowMessage(r.StatusCode.ToString);
  // P2
end;

上述代码中未释放H实例。如果我在P1处释放H,则会收到HTTP操作已取消的错误。如果我在P2处免费H,它可以正常工作。

如果我想异步执行HTTP操作,但稍后以其他方法获取响应,该怎么办:

procedure ShowResponse(A: IAsyncResult);
var
  r: IHTTPResponse;
begin
  r := THTTPClient.EndAsyncHTTP(A);
  ShowMessage(r.StatusCode.ToString);
end;

我应该如何释放H实例?

0 个答案:

没有答案