Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как узнать завершения потока? По окончанию сделать Showmessage... [D7]


mmms ©   (2007-02-02 10:15:00) 

Здравствуйте! Такое дело, есть простенький поток:

type
 TGoThread = class(TThread)
 private
   { Private declarations }
 protected
   procedure Execute; override;
 end;


в основной форме:
 private
   GT: TGoThread;


Тут же по кнопке его создаю:
    GT := TGoThread.Create(False);     // start
    GT.FreeOnTerminate := True;


Выполняется код:
procedure TGoThread.Execute;
begin
//работа по обработке
end;


Все Ок, но вот как бы узнать окончание потока? Если Showmessage вставлю в сам поток в TGoThread.Execute, в самый конец, то сработает, но это конечно не правильно, да и Showmessage не модальное сообщение, и если на форму кликнуть, оно скроется за ней.. Вот и весь вопрос, заранее благодарю за ответ.


Kolan   (2007-02-03 17:28:00) [1]

«Отлаживать лучше отладчиком.»

Сразу видно что не часто ты отлаживал потоки отладчиком. Виснет так что ППЦ. Питер(кажется он) даже хитрый способ придумал для убивания среды…


Аноним   (2007-02-03 15:01:00) [2]


> Докажи сие удтверждение реальным примером! Тогда можно будет
> отделять "мух от котлет" и тогда можно будет спорить по
> существу !


Если я докажу релаьным примером, то есть приведу код, и опишу последовательность действий, приводящих к глюку со стопроцентной воспроизводимостью, спорить будет особо не о чем, потому что я буду просто прав и все.
Но я такой пример не приведу, ибо косяки там "плавающие" ,и зафиксировать их не так просто.
То есть спорить опять не о чем, потому что такой спор сводится к:
"глючит"
"ты врешь, не глючит"
"нет, это ты врешь, глючит"
"нет, ты врешь"
Ну и зачем такой спор нужен?  Какая истина родится в нем?


Anatoly Podgoretsky   (2007-02-03 10:33:00) [3]

> Германн  (03.02.2007 01:47:14)  [14]

А чего там утверждать, так и есть

...
...
BP
...
...

при отладке будешь несколько раз попадать в BP и курсор будет дергаться по разным точкам, в зависимости от того, какой поток будет получать управление при следующим шаге.


Германн   (2007-02-03 01:47:00) [4]


> Аноним   (03.02.07 00:50) [13]
>
>
> > Сергей М. ©
>
>
> К сожалению, IDE ощутимо глючит при отладке отладчиком в
> случае ,если брек-поинты срабатывали в более чем одном потоке.
>
>
> поэтомму из лучше вообще не отлаживать )))

Докажи сие удтверждение реальным примером! Тогда можно будет отделять "мух от котлет" и тогда можно будет спорить по существу !


Аноним   (2007-02-03 00:50:00) [5]


> Сергей М. ©


К сожалению, IDE ощутимо глючит при отладке отладчиком в случае ,если брек-поинты срабатывали в более чем одном потоке.

поэтомму из лучше вообще не отлаживать )))


Сергей М.   (2007-02-02 14:28:00) [6]


> Потоки лучьше отлаживать логом.
>


Отлаживать лучше отладчиком.
А логом отлаживают лузеры)


Kolan   (2007-02-02 14:02:00) [7]

Потоки лучьше отлаживать логом.


Сергей М.   (2007-02-02 10:38:00) [8]


> Рамиль ©   (02.02.07 10:32) [8]


Следует понимать суть происходящего, иначе грабли неминуемы.


Рамиль   (2007-02-02 10:32:00) [9]

Тем более, что
GT.FreeOnTerminate := True;


Рамиль   (2007-02-02 10:32:00) [10]


> Сергей М. ©   (02.02.07 10:28) [7]

Сомневаюсь, что автору нужны такие тонкости.


Сергей М.   (2007-02-02 10:28:00) [11]

OnTerminate - это не событие завершения потока, это событие завершения выполнения метода Execute() в потоке.


Сергей М.   (2007-02-02 10:24:00) [12]


> Как узнать завершения потока?


WaitForSingleObject, MsgWaitForMultipleObjects


mmms   (2007-02-02 10:23:00) [13]

OnTerminate
Все понял, спасибо :)


brother   (2007-02-02 10:20:00) [14]

а.... ну конеш на событие OnTerminate )


brother   (2007-02-02 10:19:00) [15]

ну пикни писи спикером на худой конец....)
этож для отладки надо? потом уберешь!)
писи спикер форева!


Рамиль   (2007-02-02 10:18:00) [16]

OnTerminate
Трудно справку внимательно прочитать?


JFK&MM_extramarital_son   (2007-02-02 10:18:00) [17]

PostMessage(SomeVCLWindowHandle,YourMessage,WParam,LParam)


Наверх

Титульная страница Поиск, карта сайта Написать письмо