Здравствуйте, <Аноним>, Вы писали:
А>Просто надеялся, что ошибюсь и можно как то измудриться и реализовать все внутри ДЛЛ, наверное, не выйдет
Нет, ну измудриться как раз таки можно — покрупному.
Поставить во всех dll'ках WH_GETMESSAGE хук (::SetWindowsHookEx) для основнового треда (из dll'ки можно поставить и общесистемный, но так, конечно, лучше не поступать). И в обработчике отлавливать WM_QUIT, запощщеный в главный тред. Хук будет вызван в контексте главного треда — в каждом из них ждите завершения соответствующего (этому хуку) треда.
А если продолжить измудряться, то можно поиметь и один хук на всех — диспетчер, который будет корректно ожидать завершения всех зарегистрированых у него тредов.
Но скажу мое мнение — измудрение это полнейшее. В случает множества хуков, может упасть производительность главного треда (ведь тысячи глаз будут следить за _каждым_ посылаемым ему сообщением), во втором это жестокое усложнение архитектуры dll'лок.
P.S.
Когда уже дописывал, вспомнил, что тут топик проплывал флеймовый о
возможной засаде при обработке именно WM_QUIT (ведь его постят через PostQuitMessage, а не как все остальные через PostMessage), что-то там со внутренними флагами, которые устанавливает PostQuitMessage, но по-моему это не относиться к этому делу, но вам стоит с ним ознакомиться (в гораздо большей степени, чем это сделал я(:. Топик
SendMessage vs. PostMessageАвтор: DrMom
Дата: 21.02.03
, в особенности пост тов. Valerio, оцененный в 13 балов.