длительная операция с сообщениями
От: nicolai  
Дата: 28.06.06 09:34
Оценка:
Выполняю "длительную" операцию в фоновом потоке. Необходимо, чтобы до завершения потока выполнение прогаммы "заморозилось", но не спомощью WaitForSingleObject, т.к. программа должна отвечать на сообщения системы, в том числе для того чтобы прервать выполнение потока. В приведенном ниже коде сообщения не ходят... (AbortOnSomeWinEvent не срабатывает...)

void obj::someproc
{
запуск потока

ждем до завершения потока.

MSG message;

do
{
if(!pumpMessage())
{
return;
}

if(threadWorkFinished)
{
break;
}

if(AbortOnSomeWinEvent)
{
stopThreadWork();
break;
}

} while (::PeekMessage(&message, NULL, NULL, NULL, PM_NOREMOVE));

}

bool pumpMessage()
{
MSG msg;

if (!::GetMessage(&msg, NULL, NULL, NULL))
{
return false;
}

::TranslateMessage(&msg);
::DispatchMessage(&msg);

return true;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.