Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизНить 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c