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.
Ist eine Critical Section bereits eine Lösung? Oder gibt es eine andere Möglichkeit?
TIdHTTPServer ist eine Multithreading-Komponente und startet einen Thread pro HTTP Verbindung. Aus dem Kontext dieses Threads wird OnCommandGet aufgerufen, und aus diesem Thread darf nur synchronisiert auf den Mainthread zugegriffen werden (mit synchronize oder mittels TThread.Queue).
Wenn der Server durch mehrere Anfragen überlastet ist, so sollte er einen passenden HTTP Responsecode zurückliefern und Behandlung des Requests beenden.
Zu blockieren ist nicht sinnvoll, denn wenn mehrere CPU Kerne untätig sind würde so nur einer verwendet.