Здравствуйте, XProgrammer, Вы писали:
XP>Следющая ситуация:
XP>Имееться COM-сервер(написан на FMC)и клиент(пишется на Win Form App Managed Code), который через заданные интервалы времени поднимает должен создавать N штук интерфейсов и вызвать их с разными параметрами...
XP>Вся проблема в том, что как только я перемещаю код поднятия интерфейса внутрь созданного потока(System::Threading::Thread), так сразу при вызове метода(HRESULT RunOptionsDlg ([In, Out, MarshalAs(UnmanagedType::LPWStr)]System::String^ Str) интерфейса возникает ошибка:
XP>An unhandled exception of type 'System.InvalidCastException' occurred in Client.exe
XP>Additional information: Unable to cast COM object of type 'System.__ComObject' to interface type 'Client.IWork'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{055362DA-9A72-4585-8C05-D9D71D450228}' failed due to the following error: Интерфейс не поддерживается (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
XP>ЗЫ: Подозреваю что тут дело в безопасных потоках...Если можно, отвечайте подробнее — я только что пересел с MFC под .NET )))
COM объекты STA'шные?
1. Поставь методу нового потока STAThreadAttribute.
2. надо замаршалить интерфейсы в этот новый поток
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>