Débutant question: J'ai une application de formulaires. Il a un thread séparé qui effectue un appel de services Web, puis publie les résultats de l'appel au formulaire principal.Dois-je libérer un objet Delphi auto-instancié à partir d'un appel de services Web?
Dans mon fil, après X secondes se sont écoulées (en utilisant un TTimer), j'appelle:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage(ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues));
end;
La fonction Remote.Run.GetSystemProbeValues a le prototype suivant:
function GetSystemProbeValues : TCWProbeValues; stdcall;
Et TCWProbeValues est un tableau dynamique d'objets TCWProbeValue (qui descendent tous de TRemotable).
Dans ma principale forme, je reçois le message bien et jeté le LParam Retour à TCWProbeValues:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
Ma question est, étant donné que le tableau dynamique et ses objets ont été créés par le système Delphi HTTORIO, Qui est responsable de les libérer? Est-ce que Delphi considérait que la mémoire était réutilisable après le retour de ma fonction OnTimer? (Et dans ce cas, sa pure chance que mon gestionnaire de message principal puisse réellement lire la mémoire référencée par le LParam du message?) Ou plutôt, est-ce ma responsabilité de libérer l'objet auto-instancié par la requête HTTPRIO?
Merci beaucoup, s'il vous plaît crier si ce qui précède a besoin de plus de détails/code et je vais y ajouter!
Cheers, Duncan