代码之家  ›  专栏  ›  技术社区  ›  Chau Chee Yang

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

  •  0
  • Chau Chee Yang  · 技术社区  · 7 年前

    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 例子

    0 回复  |  直到 7 年前