Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нить Thread


Витольд ©   (2005-11-10 17:44:00) 

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

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

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


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

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


Mx   (2005-11-10 18:22:00) [2]

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


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

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


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

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


Mx   (2005-11-10 17:56:00) [5]

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

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

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

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

Thread: TThread;
...

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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо