Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизСоздание и завершение потока Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c