我的任务是发送各种带有数据的消息。
例如:
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 释放的正确处理是什么?