Re[2]: Вызов методов из COM-dll`ки
От: Eugene Sh Россия  
Дата: 09.07.03 14:27
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Здравствуйте, Eugene Sh, Вы писали:


ES>>У меня такая проблема.

ES>>Есть COM`овская dll`ка, написанная на C++. Внутри dll`ки вызывается CoInitializeEx(NULL, COINIT_MULTITHREADED) — там необходимо использовать многопоточную модель.
ES>>При вызове методов dll`ки из приложения, написанного на C++, всё нормально. А при вызове из приложения, написанного на VB, CoInitializeEx возвращает ошибку RPC_E_CHANGED_MODE — "cannot change thread mode after it is set".
ES>>Вызов делается так:
ES>>Dim a As Object
ES>>Set a = CreateObject("XXX.XXX")
ES>>a.TestCoInitEx

ES>>Кто-нибудь сталкивался с этим? Как вызвать из VB методы многопоточной COM`овской dll`ки?

Tom>Проблемма возникает из за того, что VB уже инициализировал аппартамент как STA. Вызывать обьекты, находящиеся в MTA нужно так же как и те, которые в STA. т.е просто вызывать их, но не забыть их правильно зарегистрировать.

Sorry за непонятливость, но что значит "просто вызывать их, но не забыть их правильно зарегистрировать"?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.