Форум: "Основная";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];
ВнизКак дождаться завершения потока. Найти похожие ветки
← →
stone (2002-12-09 14:43) [0]Выполняется процедура:
procedure TForm1.Button1Click(Sender: TObject);
var
MyThread : TMyThread;
begin
MyThread := TMyThread.Create(false);
... {другие действия}
ShowMessage("Готово");
end;
как мне дождаться завершения потока и лишь после этого выполнить {другие действия}?
← →
Digitman (2002-12-09 15:03) [1]см. метод TThread.WaitFor
← →
VaS (2002-12-09 15:16) [2]В Делфи6 метод WaitFor корректно работает только при FreeOnTerminate = false. Иначе деструктор вызывается до завершения WaitFor и получаем OS Exception "Invalid Handle".
Верный код:
MyThread:=TMyThread.Create(false);
MyThread.WaitFor;
FreeAndNil(MyThread);
ShowMessage("Готово");
← →
han_malign (2002-12-09 15:22) [3]или так - WaitForSingleObject(MyThread.Handle,INFINITE);
When a thread terminates, the thread object attains a signaled state, satisfying any threads that were waiting on the object.
← →
stone (2002-12-09 15:26) [4]2 VaS © (09.12.02 15:16)
> MyThread.WaitFor;
- здесь полностью останавливается выполнение последующего кода.
← →
VaS (2002-12-09 15:27) [5]
MyThread:=TMyThread.Create(false);
//много-много других действий
MyThread.WaitFor;
FreeAndNil(MyThread);
ShowMessage("Готово");
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c