TJson.JsonToObject <T> arroja errores en un entorno multihilo

Cuando usasTJson.JsonToObject en un entorno multihilo se producen violaciones de acceso aleatorio. Estuve buscando por mucho tiempo el problema y pude aislarlo con el siguiente código

Clase JSON

type
   TParameter = class
   public
      FName     : string;
      FDataType : string;
      FValue    : string;
   end;

Función de prueba:

procedure Test();
var
   myTasks: array of ITask;
   i : integer;
   max : integer;
begin

  max := 50;
  SetLength(myTasks, max);
  for i := 0 to max  -1  do begin
     myTasks[i] := TTask.Create(procedure ()
       var
          json : string;
          p : TParameter;
       begin
          json := '{"name":"NameOfParam","dataType":"TypeOfParam","value":"ValueOfParam"}';
          p := TJson.JsonToObject<TParameter>(json);
          p.Free;
       end);
     myTasks[i].Start;
  end;

  TTask.WaitForAll(myTasks);
  ShowMessage('all done!');
end;

Es solo un fragmento de código basado en una fuente mucho más compleja. Mientras use este código en un solo hilo, todo funciona sin problemas. Me pregunto si hay algo mal con el código.

Respuestas a la pregunta(1)

Su respuesta a la pregunta