【发布时间】:2014-03-10 14:30:13
【问题描述】:
我的任务是发送各种带有数据的消息。
例如:
task.Comm.Send(MSG_JOB_ERROR,[string, string,string,string,string, TObject]) ;
在接收端我有
procedure TUDPBroadCast.OnWorkerJobError(var msg: TOmniMessage);
var
s : String ;
begin
try
s := 'TASK: ' + msg.MsgData.AsArrayItem[0].AsString + ', IP: ' +
msg.MsgData.AsArrayItem[1].AsString + ', PORT: ' +
msg.MsgData.AsArrayItem[2].AsString +
', DATA: ' + msg.MsgData.AsArrayItem[3].AsString + ', REPLY: '+
msg.MsgData.AsArrayItem[4].AsString ;
Xlog('JOB ERROR > ' + s, 'UDPBroadCast') ;
processworkobject(msg.MsgData.AsArrayItem[4].AsObject) ;
finally
msg.MsgData.Clear ;
end;
end;
但我不认为 MsgData.Clear 会正确地取消分配所有内存。
TomniValue 释放的正确处理方式是什么?
【问题讨论】:
标签: delphi delphi-xe5 omnithreadlibrary