Не проходят вызовы событий из COM в .Net из фоновых потоков
От: Alex Россия  
Дата: 28.02.11 15:37
Оценка:
Уважаемые коллеги, сразу хочу извиниться за то, что это же сообщение опубликовано в ветке COM/DCOM/ActiveX.
Точно не знаю по чьей больше это части.

Такая ситуация...

Есть многопоточный ATL-COM-inproc сервер, написанный на VC6. Имеет один событийный интерфейс.
В фоновых потоках на COM-сервере происходят события, которые должны быть выброшены наружу.

Фоновые потоки при инициализации кладутся в MTA.
Ссылки на интерфейс событий в фоновых потоках я маршалю и вызовы делаю уже по отмаршаленному интерфейсу.

В VB-клиенте — мечта! Все работает как из пушки.
Делаю клиента на C#. Всё. Приходят события вызванные только из основного потока.
По событиям из фонового потока — молчок, хотя вызовы по отмаршаленному интерфейсу pDispatch->Invoke не приводят к ошибке: HRESULT = 0.

Клиента C# я пробовал инициализировать как в MTA, так и в STA — не помогает.
Не подскажете в чем дело?

Примеры кода здесь не привожу. Если будет нужно — выложу.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.