Уважаемые коллеги, сразу хочу извиниться за то, что это же сообщение опубликовано в ветке COM/DCOM/ActiveX.
Точно не знаю по чьей больше это части.
Такая ситуация...
Есть многопоточный ATL-COM-inproc сервер, написанный на VC6. Имеет один событийный интерфейс.
В фоновых потоках на COM-сервере происходят события, которые должны быть выброшены наружу.
Фоновые потоки при инициализации кладутся в MTA.
Ссылки на интерфейс событий в фоновых потоках я маршалю и вызовы делаю уже по отмаршаленному интерфейсу.
В VB-клиенте — мечта! Все работает как из пушки.
Делаю клиента на C#. Всё. Приходят события вызванные только из основного потока.
По событиям из фонового потока — молчок, хотя вызовы по отмаршаленному интерфейсу pDispatch->Invoke не приводят к ошибке: HRESULT = 0.
Клиента C# я пробовал инициализировать как в MTA, так и в STA — не помогает.
Не подскажете в чем дело?
Примеры кода здесь не привожу. Если будет нужно — выложу.