TMappingExplorerManager threading issue

That's true, but adding a critical section will slow down the process. It's better that you just initialize all explorers you will need in your application before spawning the threads. You can also use the following code to initialize the explorer and make it fully thread-safe:



E := TMapingExplorer.Get(MyModelName);

for C in E.Hierarchy.Classes do
begin
  E.GetTable(C);
  E.GetId(C);
  E.GetVersionColumn(C);
  E.GetAssociations(C, False, False);
  E.GetAssociations(C, False, True);
  E.GetAssociations(C, True, False);
  E.GetAssociations(C, True, True);
  E.GetColumns(C, False, False);
  E.GetColumns(C, False, True);
  E.GetColumns(C, True, False);
  E.GetColumns(C, True, True);
  E.GetDiscriminatorColumn(C, False);
  E.GetDiscriminatorColumn(C, True);
  E.GetSequence(C, False);
  E.GetSequence(C, True);
  E.GetClassStateMembers(C, False, False);
  E.GetClassStateMembers(C, False, True);
  E.GetClassStateMembers(C, True, False);
  E.GetClassStateMembers(C, True, True);
  E.GetClassVisibleMembers(C, False);
  E.GetClassVisibleMembers(C, True);
end;

Wagner R. Landgraf2018-06-10 02:33:07