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

Вниз

Создание и завершение потока   Найти похожие ветки 

 
S@shka ©   (2004-10-30 23:45) [0]

Народ, вот помогите мне наконец въехать в следующий вопрос.
Есть оконное приложение, на Form.Create стоит создание потока
путем вызова BeginThread (...);
Далее насколько я понимаю, допустим поток завершил свою работу
мы уведомели главное окно, например, PostMessage (Form1.Handle...).
В обработчике вызываем CloseHandle (ThreadHandle); И все ок.
А что делать если подразумевается, что поток должен работать все время (вместе с приложением)и его завершение будет только при завершении работы всего приложения. Нужно ли на FormClose ставить ожидание выполнения потока? (например, с помощью мютекса). Достаточно ли просто проинформировать поток о том что он будет закрыт выставлением определенного флага?
Цитирую (Справочник по Дельфи Рей Лишнер) "Когда форма закрывается она прерывает поток. Возможно, что сообщение о завершении потока (если в потоке при выходе, после анализа флага завершения выставленного по FormClose делается PostMessage форме) придет после разрушения формы, но это не будет большой проблемой т.к. Windows уничтожит поток при завершении программы". А если у меня в функции потока созадются какие -то объекты будут ли они при этом корректно разрушены??? не понятно? или если код такого плана...
function ThreadFunc ();
var
T : TMyObject;
begin
T := TMyObject.Create;
while (TRUE) do
begin
 ....
 sleep (20000);
end;
T.Free;
PostMessage (Form1.Handle,WM_FINISHED,0,0);
end;
гарантировано ли разрушение T??? и не прифедет ли такой код к возможному подвисанию приложения при закрытии на время до 20 сек???
Спасибо!!


 
MaxDDinc   (2004-10-31 00:12) [1]

Любые объекты программы, в том числе и нити (процессы), будут разрушены при закрытии основного окна. Задержка в нити не приведет к зависанию программы, так как это отдельный от главного поток, которому выделяется свой квант времени для решения собственных задач



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
3-1099977372
Dmitriy O.
2004-11-09 08:16
2004.12.12
Как очистить базу ?


14-1101370001
Zhekson
2004-11-25 11:06
2004.12.12
Для души:


3-1100296583
SergP
2004-11-13 00:56
2004.12.12
Создание таблицы DBASE IV. Что посоветуете использовать?


14-1100666946
Megabyte-CeerCop
2004-11-17 07:49
2004.12.12
Потерял ветку про ламаразмы, а спостить нужно.


14-1101014611
ИМХО
2004-11-21 08:23
2004.12.12
Как поставить на один комп Win98 и WinXP?