Re: Продолжение проблемы с Threads
От: Кодт Россия  
Дата: 15.10.04 16:33
Оценка:
Здравствуйте, allco, Вы писали:

A>Неудается корректно завершить Thread,

A>функция WaitForSingleObject(m_pThread->m_hThread, INFINITE), зависает на бесконечное количество времени,
A>при этом трид не дохнет и не выполняется НЕ ПРОИСХОДИТ НИ ЧЕГО (прога просто зависает)

A>Почему это происходит?

A>Как решить проблему?

Понятно почему!

В главном потоке ты обрабатываешь сообщение OnStopThread, взводя флажок и далее ожидая сигнал.
Начиная с этого момента главный поток виснет...

Рабочий поток, увидев флаг, посылает главному потоку сообщение SendMessage(... WM_SETTEXT ...)
pText->SetWindowText(_T("Thread is dead!"));

и ждёт, когда же тот обработает...

А тот не обрабатывает... кукует...

Мораль:
1) Нефиг вообще из рабочего потока ковыряться в окнах.
2) Нефиг в оконном потоке глухо ждать чего-то
3) Если хочешь ждать — делай MsgWaitFor... и прокачивай сообщения, которые к тебе приходят.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.