大大,为何小弟我把TCPClient放在线程里使用,然后在free线程时会卡住

请教各位大大,为何我把TCPClient放在线程里使用,然后在free线程时会卡住?
delphi7,用TcpClient做的一个练习,在断开连接时想释放线程,但执行到ClientReceiveThread2.Free;这句时就卡住了,代码不往下执行了,这是为什么?
直接free是没有问题的,但我想知道为何先Suspend再free就会卡住?换用TIDTCPClient也是同样的效果

  if TcpClient2.Connected then
  begin
  TcpClient2.Disconnect;
  ClientReceiveThread2.Suspend;
  ClientReceiveThread2.Free;
  end;


这是线程的execute
procedure TClientReceiveThread2.Execute;
var
  strRecv : String;
begin
  with Form1 do
  begin
  while TcpClient2.Connected do  
  if TcpClient2.WaitForData(0) = true then
  begin
  strRecv := TcpClient2.Receiveln(#13);
  if checkFreeze.Checked = false then
  memo4602.Lines.Add(strRecv);
  end;
  sleep(100);
  end;
end;

------解决方案--------------------
ClientReceiveThread2.Suspend;
是线程挂起啊兄弟
------解决方案--------------------
memo4602.Lines.Add(strRecv);

在线程不能直接访问VCL控件,否则会造成问题。