![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
убийство и рождение потока [D5]
Andrey Voznesenskiy © (2003-09-24 18:18:00)
По таймеру примерно стоит следующее:
{убийство и рождение потока}
TerminateThread(CommThread,0);
closehandle(CommThread);
WriteComm(chr($11)+chr($11)+chr($30)+chr($31)); CommThread := CreateThread(nil,1,@ReadComm,nil,0,ThreadID);
setthreadpriority(commthread,2);
F1,F1,F1!==== После 1700 запусков потока в W98 или 2100 в XP
CommThread и ThreadID всегда возвращает 0 ( т.е. не создает поток) И СООТВЕТСТВЕННО НИЧЕГО НЕ ПРИНИМАЕТ ИЗ COMa
Что ж делать???
(говорят что нужно выгружать из памяти поток)
Suntechnic (2003-09-24 19:24:00) [1]
Правильно тебе Polevi © советует. Незачем на каждый приём данных создавать/убивать поток, да ещё таким бесчеловечным образом. Создавай один поток и пробуждай его только тогда, когда есть чего читать из порта. Тут тебе может помочь ф-ция
WaitCommEvent
Polevi (2003-09-24 19:11:00) [2]
Зачем постоянно убивать поток и создавать его заново ?
И если уж хочется так делать - завершай поток по человечески, TerminateThread крайний случай