Что имеем:
Есть объект ( даже, точнее - СОМ объект ).
Пользует его IExplorer в Win2k или WinXP, если это важно.
Этот объект для выполнения доооолгой работы создает Объект-Поток (Поток дальше). Есть свой класс-обертка для _beginthreadex.
Поток, для информирования пользователя, имеет окно с progress bar-ом, может терять фокус и закрываться другим окнами, в т.ч. самим IExplorer -ом. Также, имеет кнопочку "Cansel" и "крестик"
, т.е. пользователь может прервать эту дооооооооолгую работу.
Что хотим:
При закрытии IExplorer -а, или процесса - владельца СОМ объекта, показать пользователю ("вывести вперед" окно с прогрессом) , что доооооооолгая работа еще не завершена! И он может дождаться ее завершения или прервать ...
Что испробовано:
СОМ объект имеет Интерфейсный (IDispatch) метод Close, или OnDestroy() хендел, в крайнем случае.
Поток имеет переменную, которую проверяет периодически:), а, также естественно, интрфейс для установки этой переменной.
СОМ объект "ставит в известность" Поток и ждет его завершения -
while(Проверили)
{
::SwitchToThread(); //дали и младшеньким поработать
Sleep(SLEEP_TIME); //пошли спать
}Как выглядит проблема:
При ожидании его завершения, Поток СОВСЕМ перестает работать ( ставил внутри печать, и точки прерывания даже).
Ждать пробовал в другой функции. Из Close() посылал сам себе user_defined_message, и в его обработчике ждал.
Приветсвуется любые вопросы, ссылки (можно на английском ессно:), идеии , в конце концов !
Где искать?