Добрый день.
У меня возникла следующая проблема: при работе ConenctionPoints происходит ошибка в DispatchMessage...
Что я делаю: создаю поток, в нем подгружаю с помощью LoadLibrary библиотеку, в которой затем создаю инстанс некоторого COM-объекта, подписываюсь на его ивенты через менанизм ConnectionPoints. Основной поток пока выполняет цикл выборки сообщений. Как только приходит сообщение с номером 0х0000046b(как я подозреваю сообщение связанное с ConnectionPoints) программа наламывается на функции DispatchMessage.
Я использую COINIT_APARTMENTTHREADED модель.
Код в действительности гораздо крупнее, но схематически можно его отобразить примерно так:
DWORD WINAPI work_thread_func(void* pdata)
{
CoInitializeEx(0, COINIT_APARTMENTTHREADED);
// подгружается DLL, в ней создается COM-объект, к которому подключаемся через
// ConnectionPoints
while(true)
{
MSG msg;
while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if(msg.message == SomeUserMessage)
{
// Делаю работу предусмотренную программой
}
DispatchMessage(&msg);
}
MsgWaitForMultipleObjects(...);
// Делаю работу предусмотренную программой
}
}
}
До того момента, когда мне в этом объекте пришлось использовать ConnectionPoints все чудестно работало....
Может кто сталкивался с таким?
как выйти из положения?