Connection Points и dll
От: messir_kelvin Украина  
Дата: 01.06.05 13:50
Оценка:
Добрый день.
У меня возникла следующая проблема: при работе 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 все чудестно работало....
Может кто сталкивался с таким?
как выйти из положения?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.