Re[4]: Как понять, что поток завершился?
От: Ihor Osovyak Украина  
Дата: 16.06.04 11:42
Оценка:
Здравствуйте, sadomovalex, Вы писали:

S>Здравствуйте, Daimond, Вы писали:


D>>Здравствуйте, akasoft, Вы писали:


A>>>Здравствуйте, Daimond, Вы писали:


D>>>>Как понять выполняется ли этот поток в данный момент или уже завершился и удалился?


A>>>Событие OnTerminate() потока.


A>>>

A>>>Occurs after the thread's Execute method has returned and before the thread is destroyed.


D>>Поднимать там флаг... можно... А есть какие-нибудь другие способы?


S>Попробуй:

S>if (WaitForSingleObject(Modem->Handle, 0) == WAIT_OBJECT_0)
S>{
S>// поток завершился
S>}
S>else
S>{
S>}

дык человек вероятнее всего работает с установленым FreeOnTerminate, судя по диалогу выше


> А есть какие-нибудь другие способы?


Способов много. Два уже предложили. При использовании техники с WaitForSingleObject проследите с тем, чтобы не было установлено FreeOnTerminate, да не забудьте потом вызвать Free.
Я иногда использую технику посылки сообщения через PostMessage соотв. форме. PostMessage обычно ставлю в конце Execute (не территориального, по ходу выполнения естественно)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.