у меня от дельфокодесов глаза друг друга на*** посылают, но рискну объяснить. очевидно что после создания рабочих потоков, основной выходит из цикла и соответственно выходит из функции, вызывая затем всякие деструкторы итд и в конце концов - ExitProcess. на чем процесс и завершается. поэтому нужно чтобы основной поток не выходил. или выходил например по нажатию горячей клавиши. первый вариант (школьный) - перед end еще один бесконечный цикл типа while(TRUE) { Sleep(1); } второй вариант - регистрируешь хоткей через RegisterHotKey и в цикле GetMessage читаешь сообщения из очереди, на WM_HOTKEY с заданной клавишей брякаешь цикл. а ну и самый элегантный - ждешь отработки всех потоков по средством WaitForMultipleObjects, которой передается поинтер на массив хендлов созданных тредов.
Проблема в том, что у тебя MainThread завершает работу. PHP: type TMsgRecord = record thread : Integer; auth : Boolean; msg : string[15]; end; var tArray:array [1..255] of integer; tID:array [1..255] of longword; tMSG:array [1..255] of TMsgRecord; ThreadVar msgPtr : ^TMsgRecord; function MyFunction(Parameter : Pointer) : Integer; begin Result := 0; msgPtr := Parameter; ... CloseHandle(tArray[msgPtr.thread]); dec(tCount); EndThread(0); end; for i:=1 to 255 do begin tMSG[i].thread := i; tMSG[i].auth := false; tMSG[i].msg := CMD+'.'+IntToStr(i); Inc(tCount); tArray[i]:=BeginThread(nil,0,Addr(myFunction),Addr(tMSG[i]),0,tID[i]); end; Вот и вся многопоточность. Зачем всякие конструкторы-деструкторы? Слишком много лишнего тащишь с собой, в итоге вес консольного приложения практически не будет отличаться от VCL'ного. Как по мне, нужно стараться избавляться от лишних модулей, оставляя разве что Windows и Winsock