Indy synchronizuje ServerTCPExecute

Używam komponentu TIDTCPServer. Jak rozumiem wydarzenieServerTCPExecute(AContext: TIdContext) nie jest zsynchronizowany. Jaki jest najlepszy sposób synchronizacji? Potrzebuję danych do wysłania do głównego wątku i przywrócenia ich do formatowania odpowiedzi.

Używam Indy 10.5.8.0.

Metoda 1

Czy jest to coś takiego? Powinienem zająć się sekcjami krytycznymi, aby przekazać dane z niezsynchronizowanej funkcji do aplikacji?

var data:string;
.
.
.
procedure MainThreadProcedure;
begin
  ...
end;
.
.
.
procedure IdTCPServerExecute(AContext: TIDContext);
var tmp: string;
begin
.
.
.
EnterCriticalSection(cs);
data:= tmp;
TIdYarnOfThread(AContext.Yarn).Thread.Synchronize(MainThreadProcedure);
LeaveCriticalSection(cs);
end;

questionAnswers(2)

yourAnswerToTheQuestion