Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.18;
Скачать: CL | DM;

Вниз

Почему поток не возобновляется после паузы?   Найти похожие ветки 

 
Aleksandr ©   (2002-03-04 15:44) [0]

Уважаемые коллеги!
У меня в программе несколько потоков, основная задача которых - искать файлы по маске и пускать их в обработку. Execute потоков примерно такой:
while NOT Terminated do
try
EnterCriticalSection(FileSection);
if SearchFiles(InDir,AppMask) then
WorkFiles;
finally
LeaveCriticalSection(FileSection);
Sleep(FSleepInterval) // 500
end

Но вот есть одна неприятная проблема: если файлов на момент запуска потока не оказалось, то поток останавливается "навсегда". То есть на их появление уже не реагирует. В констракторе FreeOnTermnate:=false. В чем тут проблема, подскажите?


 
Digitman ©   (2002-03-04 15:59) [1]

Проблема, скорей всего, в теле процедур SearchFiles() и WorkFiles()


 
y-soft ©   (2002-03-04 23:16) [2]

Есть еще варианты:

1. Возможно не удается войти в критическую секцию. В этом случае поток оччччень долго не завершится :)

2.К сожалению, в Delphi исключения в дополнительных потоках обрабатываются как-то не так, как в первичном. Иногда поток при возникновении исключения просто зависает без выдачи сообщений и убивается только принудительно вызовом TerminateThread :(



Страницы: 1 вся ветка

Текущий архив: 2002.03.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
6-57471
hacker
2002-01-01 19:16
2002.03.18
TClientSocket+HTTP запросы=Вопросы и проблемы


3-57278
sgs
2002-02-18 11:55
2002.03.18
Помогите пож. с БЛОБами.


6-57485
ken
2001-12-29 10:55
2002.03.18
как узнать модемный пул при подключении через dialup.


4-57567
Voituk
2002-01-17 16:37
2002.03.18
Такой заюзанный вопрос


6-57488
Pantero
2001-12-29 22:53
2002.03.18
Послать мыла наименшими ресурсами в Дельфи