用indy8 的TidTCPServer做一个接收数据的服务端,我想把收到的数据在memo中同步显示出来,如何实现??
显示数据时,因为要访问VCL,所以要用AThread.Synchronize(ShowData);
但是如何传递参数啊,例如:
procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
s: TMemoryStream;
begin
s := TMemoryStream.Create;
try
AThread.Connection.ReadStream(s, -1, False);
//如何在此显示s中的数据
//AThread.Synchronize(ShowData);????,如何将s传给ShowData???
//如果将s放在本单元的private区,还是不能保证多个客户端连接的线程同时访问s情况啊 finally
s.Free;
AThread.Stop;
end;
end;
显示数据时,因为要访问VCL,所以要用AThread.Synchronize(ShowData);
但是如何传递参数啊,例如:
procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
s: TMemoryStream;
begin
s := TMemoryStream.Create;
try
AThread.Connection.ReadStream(s, -1, False);
//如何在此显示s中的数据
//AThread.Synchronize(ShowData);????,如何将s传给ShowData???
//如果将s放在本单元的private区,还是不能保证多个客户端连接的线程同时访问s情况啊 finally
s.Free;
AThread.Stop;
end;
end;
没做过测试在这样的线程中行不行
2.临界区
var
CS:TRTLCriticalSection;
EnterCriticalSection(CS);
LeaveCriticalSection(CS);
3,4,5,6....多线程同步技术类似于2