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

Вниз

Нить Thread   Найти похожие ветки 

 
Витольд   (2005-11-10 17:44) [0]

Доброго вечера.

Я в потоке читаю картинки в кэш (ObjectList) из определенного еаталога.
Но вэтот момент пользователь может выбрать другой каталог.
Пытаюсь сделать If Thread1.Terminated then Thread1.Free;
И потом создаю новый поток. Очищаю ObjectList.
Проблема: Первый поток завершается не сразу, иногда после того как я очищу ObjectList. Отсюда AV.

Подскажите как поступить в этой ситуации.


 
Витольд   (2005-11-10 17:48) [1]

В методе Execute в цикле дергаю метод не принадлежащий классу потока.
Который заполняет внешний ObjectList(не принадлежащий классу потока - не являющийся его полем).


 
Mx ©   (2005-11-10 17:56) [2]

Приедтся дождаться завершения очередной итерации цикла в методе Execute.

Я представляю себе это следующим образом:

procedure Execute;
begin
 repeat
 { гружу очередную картинку }
 until Terminated;
end;

Представим, что в главной форме есть переменная, ссылающаяся на поток.

Thread: TThread;
...

В методе перезапуска потока сделай так:

Thread.Terminate;
Thread.Wait; - эта метод завершится, когда метод Execute закончит свою работу.


 
Витольд   (2005-11-10 18:06) [3]

Спасибки :). Буду пробовать.


 
Витольд   (2005-11-10 18:13) [4]

Thread.Wait; - это наверное Thread.WaitFor?;


 
Mx ©   (2005-11-10 18:22) [5]

Угу, верно. На Delphi уже пару месяцев не пишу, потому точно не помню.


 
Витольд   (2005-11-10 18:24) [6]

Спасибо еще раз, все заработало как надо.



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

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

Наверх




Память: 0.47 MB
Время: 0.028 c
4-1127473166
Still Swamp
2005-09-23 14:59
2005.11.27
keybd_event и GetKeyStatus отказываются работать в терминальном


14-1131181753
Lisa
2005-11-05 12:09
2005.11.27
Помогите с DXF


14-1130860157
NORDmen
2005-11-01 18:49
2005.11.27
где есть исчерпывающие примеры/исходники?


4-1127649408
Jolik
2005-09-25 15:56
2005.11.27
PAS обертка для ICMP.DLL


2-1131219086
Bkmz
2005-11-05 22:31
2005.11.27
Как отправить почту?