首页 > 解决方案 > 在异步操作中释放 THTTPClient 实例的最佳位置是什么?

问题描述

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代码中没有释放实例。如果我H在 P1 空闲,我会收到 HTTP 操作已取消的错误。如果我H在 P2 有空,它工作正常。

如果我想异步执行一个 HTTP 操作,但后来用其他方法得到响应怎么办:

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

我应该如何释放H实例?

标签: delphi

解决方案


推荐阅读