delphi7中的indy servers中的idTCPServer中的关闭错误

                            
MDI子窗口中   
  IdThreadMgr:   TIdThreadMgrDefault;  
  Server:   TIdTCPServer;  
   
  procedure   TFormChild1.FormShow(Sender:   TObject);  
  begin  
      Server.Active   :=   True;  
  end;  
  procedure   TFormChild1.ServerConnect(AThread:   TIdPeerThread);  
  var  
      PeerIP:   String;  
  begin  
      PeerIP   :=   AThread.Connection.Socket.Binding.PeerIP;  
  end;  
  procedure   TFormChild1.ServerDisconnect(AThread:   TIdPeerThread);  
  Var  
      PeerIP   :String;  
  begin  
      PeerIP   :=   AThread.Connection.Socket.Binding.PeerIP;  
      ShowMessage('连接断开');  
  end;  
  procedure   TFormChild1.ServerExecute(AThread:   TIdPeerThread);  
  begin  
      if   not   AThread.Terminated   and   AThread.Connection.Connected   then  
      begin  
          //读接收信息    
          S   :=   AThread.Connection.ReadLn;  
          //.........  
      end;  
  end;  
  procedure   TFormChild1.FormClose(Sender:   TObject;   var   Action:   TCloseAction);  
  begin  
      Action   :=   caFree;  
  end;  
  //下面的procedure当客户端连接的情况下可以顺利执行,但客户端没连接的情况下,FormChild1关闭时,下面的代码就有问题:程序死掉,FormChild1关不掉  
  procedure   TFormChild1.FormCloseQuery(Sender:   TObject;  
      var   CanClose:   Boolean);  
  Var  
      AThread:   TIdPeerThread;  
      I:   Integer;  
  begin  
      //for   I   :=   0   to   IdThreadMgr.ActiveThreads.LockList.Count   -   1   do  
   
      try  
          try  
          AThread   :=   IdThreadMgr.ActiveThreads.LockList.Items[0];  
          except  
          end;  
          try  
          AThread.Connection.DisconnectSocket;  
          except  
          end;  
          try  
          AThread.Terminate;  
          except  
          end;  
      finally  
          IdThreadMgr.ActiveThreads.UnlockList;  
      end;  
   
   
  end;  
   
  还有就是procedure   TFormChild1.FormCloseQuery(Sender:   TObject;  
      var   CanClose:   Boolean);  
  在此需要吗?  
  FormChild1关闭后AThread.Connection.DisconnectSocket;  
  AThread.Terminate;不会自动销毁吗?线程会自动销毁吗?

查看回复