Re: COM && Thread
От: Константин Л. Франция  
Дата: 12.10.06 08:37
Оценка:
Здравствуйте, 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>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.