新手问题:我有一个表单应用程序。它有一个单独的线程进行 Web 服务调用,然后将调用结果发布到主窗体。
在我的线程中,经过 X 秒后(使用 TTimer),我调用:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage( ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues) );
end;
函数 Remote.Run.GetSystemProbeValues 具有以下原型:
function GetSystemProbeValues : TCWProbeValues; stdcall;
TCWProbeValues 是 TCWProbeValue 对象的动态数组(它们都来自 TRemotable)。
在我的主要形式中,我收到了很好的消息并将 LParam 转换回 TCWProbeValues:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
我的问题是,鉴于动态数组及其对象是由 Delphi HTTORIO 系统创建的,谁负责释放它们?在我的 OnTimer 函数返回后,Delphi 是否认为该内存可重用?(在这种情况下,我的主窗体消息处理程序实际上可以读取消息的 LParam 引用的内存,这纯粹是幸运的吗?)或者更确切地说,释放由 HTTPRIO 请求自动实例化的对象是我的责任吗?
非常感谢,如果以上需要更多详细信息/代码,请大喊大叫,我会添加!
干杯,邓肯