我正在使用 TIDTCPServer 组件。据我了解,事件ServerTCPExecute(AContext: TIdContext)
不同步。同步它的最佳方法是什么?我需要将数据发送到主线程并让它们返回格式化答案。
我正在使用 Indy 10.5.8.0。
方法一
像这样我应该处理关键部分以将数据从非同步函数传递到应用程序吗?
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;