Ну исправте вы строчку
Код:
while not Thread[id].Connect do Sleep(1);
Несерьезно это. Предлагал вам идею проигнорили. Ну может с кодом проблем меньше будет
delphi Код:
procedure Server(Param: Pointer);
................
................
Thread[id].ConnectEvent:= CreateEvent(nil, true,false, PChar(NameEvent));
Thread[id].CH:=BeginThread(nil, 0, @Client, Param, 0, Thread[id].CTH);
...............
if WaitForSingleObject(Thread[id].ConnectEvet, TimeOut)<>0 then
begin
TerminateThread(Thread[id].CH,0);
ExitThread(0);
end;
.............
.............
end;
procedure Client(Param: Pointer);
..........
..........
PulseEvent(Thread[id].ConnectEvent);
..........
..........
end;
дальше сами разберетесь ))