这段非常简单的代码在几小时前就运行得很好。
我使用TTimer
从IdTCPClient
启动了写入和读取事件
成分
不知何故,它不再起作用了。尝试ReadLn
时,它会冻结。
我怀疑ReadLn
阻止主线程等待服务器线程调用WriteLn()
。
procedure TFormLogin.TimerGetListTimer(Sender: TObject);
var
genset_response: String;
begin
TimerGetList.Enabled := false;
IdTCPClient1.IOHandler.WriteLn('GET_LIST');
genset_response := IdTCPClient1.Socket.ReadLn();
end;
如果我执行genset_response := IdTCPClient1.Socket.ReadString(8);
,可以从回复正文中获取前8个字母。
如果我执行ShowMessage(IdTCPClient1.IOHandler.ReadLn('',200));
,则返回空白。