TIDTCPServerコンポーネントを使用しています。私が理解したように、イベントServerTCPExecute(AContext: TIdContext)
は同期されていません。それを同期する最良の方法は何ですか?データをメインスレッドに送信して、回答をフォーマットするために戻す必要があります。
Indy10.5.8.0を使用しています。
方法1
同期されていない関数からアプリケーションにデータを渡すためにクリティカルセクションを処理する必要があるのは、このようなものですか?
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;