新手问题:我有一个表单应用程序。它有一个独立的线程,该线程进行 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系统创建的,那么谁负责释放它们?Delphi是否考虑在我的OnTimer函数返回后可重用内存? (如果是这种情况,那么我的主表单消息处理程序实际上可以读取消息的LParam引用的内存,这纯粹是好运吗?)还是说,我需要负责释放由HTTPRIO请求自动实例化的对象?非常感谢,请告知上述内容是否需要更多详细信息/代码,我会添加!祝好,邓肯