![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приостановка выполнения процедуры, до завершения потока. [D7]
Draught © (2005-11-30 21:02:00)Доброго всем времени суток.
Столкнулся с такой ситуацией: при работе приложения для выполнения некоторых операций создается отдельный поток:
HThread:=CreateThread(nil,0,@ThreadFunc,nil,0,ThreadID);
после его выполнения результаты автоматически сохраняются в файл, реализовано это все в одной процедуре, по нажатию на кнопоку старта, выглядит примерно так:
procedure ButtonClick(Sender: TObject);
begin
...
HThread:=CreateThread(nil,0,@ThreadFunc,nil,0,ThreadID);
...
result_savetofile;
...
end;
где result_savetofile- процедура сохраниения результата в соответствующие файлы, в случае неудачи - сохранение соответствующей информации об этом...
Вопрос следующий: после создания отдельного потока требуется каким-либо образом приостанавливать дальнейшее выполнение процедуры, как это можно реализовать?
Набережных С. (2005-12-01 08:48:00) [21]
> Draught
И нафига тогда поток, если его завершения ждать сразу после создания? Просто делай все внутри самой процедуры.
Draught (2005-11-30 21:18:00) [22]Можно использовать как вариант какой-нибудь флаг внутри выполняющегося потока, но может быть есть способ определять состояние потока и без дополнительного флага?
Draught (2005-11-30 21:12:00) [23]На самом деле все сводится к простому - каким образом можно выяснить завершился ли поток или все еще выполняется?