我这里是一个Console程序。
主线程中创建附属线程
    InstanceThreadHandle := CreateThread(nil, 0, @GetFreeInfoProcess, nil, 0, InstanceThreadID);
    myTMainSocketClass := TMainSocketClass.Create(CMDHeader, IsSucess,
        ServerIP, ServerPort,Petname);
    //循环
  while true do
  begin
     sleep(1000);
  end;
附属线程中  while(GetMessage(myMsg, 0, 0, 0)) do
  begin
    if myMsg.message = WsaNotifyMessage then
    begin
      case myMsg.lParam of
        Byte(DoFreeInstance): //free主socket
          //释放主socket类
          if myTMainSocketClass <> nil then
          begin
            FreeAndNil(myTMainSocketClass);
            //退出进程。
            halt;
// 或者
//          exitprocess(0);
          end; 
我用halt或者exitprocess有时候能退出,但是80%情况都不能退出,只知道怎么回事。
有什么更好的 退出程序的方法吗?