我写了个DLL,是GPRS的通讯接口,里面有个线程,在这个线程里如果收到数据,则会创建一个数据接收的线程:
CreateThread(nil, 0, @GPRSSocketWorkThread, Pointer(recev), 0, ThreadID);线程代码:
procedure GPRSSocketWorkThread(ns: TSocket); stdcall;
var
  rtn,k: Integer;
begin
  try
    while true do
    begin
      rtn := recv(ns, recvbuf, MAX_BUF_LEN, 0);
      //处理接收数据 。
    end;
  except
  end;
end;现在调试中发现一个问题,如果我用CloseSocket(ns)来退出这个连接,发现程序会异常,调试结果是因为GPRSSocketWorkThread这个线程仍然在运行,请问这个线程该在什么时候来退出比较好,怎么退出?