Es finden
GUI-Zugriffe und Tabellen-Zugriffe statt und das crasht natürlich, wenn das parallel passiert. Und das tut es leider, weil ja jeder request in dem idHTTPServer einen eigenen Thread erzeugt.
Ja, das ist korrekt. Es wird aus dem Kontext des OnCommandGet Threads auf
GUI/Tabellen zugegriffen, und das darf
nur mit synchronize oder TThread.Queue geschehen.
Ob dies nun nur aus einem einzigen oder aus mehreren Server-Threads geschieht, macht für die 'crashs' keinen Unterschied.
Auch ein einzelner Server-Thread würde crashen.
Um die Fertigstellung des Projektes etwas zu beschleunigen, möchte ich das Ereignis HTTPServerCommandGet so abändern, dass es niemals durch Threads parallel abgearbeitet wird, sondern immer alle Get-Requests nacheinander abgearbeitet werden.
Das ist daher keine Lösung des Problems, da auch dann noch aus dem Server-Thread auf
GUI/Tabellen zugegriffen würde.
Ist eine Critical Section bereits eine Lösung?
Nein, auch eine Critical Section bewirkt nicht dass auf
GUI/Tabellen aus dem Mainthread zugegriffen wird. Es wird aus dem aktuellen Thread zugegriffen.
Oder gibt es eine andere Möglichkeit?
synchronize und TThread.Queue verwenden