delphi - 在异步操作中释放 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
实例?
解决方案
推荐阅读
- pyqt5 - 无法从 PyQt5.QtGui 导入 QSound
- binding - NSTableView binding + delegate causes array index error
- r - 如何在 R 中将 25 小时制转换为 AM/PM?
- c# - 使用 C# 的表中的 DateFormat 无法正确显示
- javascript - Why is parseInt() not converting my String of numbers correctly?
- java - 如何为这些资源添加 `exports` 或 `opens` 以便其他模块可以加载它们?
- r - count total and positive samples by group
- mysql - Replace HTTP:// to HTTPS:// in WordPress
- macos - 错误:1407742E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报协议版本
- drools - 在流口水的子类上应用累积