Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Вниз

Почему поток не возобновляется после паузы? 


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 :(




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.025 c
1-57377           vopros                2002-03-01 12:50  2002.03.18  
Подскажите как в TMemo делать поиск?


7-57526           Kostya Luzan1         2001-12-12 22:14  2002.03.18  
PS/2 port


7-57541           Run                   2001-12-15 11:43  2002.03.18  
Работа с реестром


1-57404           SER                   2002-03-01 02:43  2002.03.18  
Функции и процедуры с использыванием методов объектов


14-57505          Жаждущий!             2002-01-31 04:36  2002.03.18  
КАК ПРОГАММУ НЕ ИМЕЮЩУУ ФОРМЫ, ОСТАВИТЬ РЕЗИДЕТНОЙ????